بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
1846 -
تاريخ الانضمام
-
Days Won
30
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو محمود_الشريف
-
أخى الكريم بدايه تغيير لون الخليه الذى تتحدث عنه هل هو مرتبط بشىء ما مثل عند ادخال قيمه أو خلافه فهناك تنسيق شرطى يستخدم لذلك وهذا متاح من خلال قوائم الاكسل نفسها وممكن من خلال الأكواد اما اذا كنت تقصد تغيير لون الخليه عند الوقوف عليها لإبرازها فهناك كود لذلك فهذا كود مثلا يقوم بتغيير لون الخلية عند الوقوف عليها ولا يغير لون الخلفية الأصلى عند الانتقال منها الى خليه أخرى والكود يوضع بحدث المصنف Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) MyColor = 32 If Not IsError(Sh.[N_Color_Rng]) Then If Not IsError(Sh.[N_Color_Color]) Then If Not IsError(Sh.[N_Color_Old]) Then If Sh.[N_Color_Rng].Interior.ColorIndex = Sh.[N_Color_Old] Then Sh.[N_Color_Rng].Interior.ColorIndex = Sh.[N_Color_Color] End If End If End If End If Sh.Names.Add "N_Color_Rng", ActiveCell Sh.Names.Add "N_Color_Color", ActiveCell.Interior.ColorIndex Sh.Names.Add "N_Color_Old", MyColor ActiveCell.Interior.ColorIndex = MyColor End Sub فيرجى تحديد ماذا تريد ورفع ملف للعمل عليه حتى يتسنى لمن يريد تقديم المساعده فهم المطلوب وتقبل منى وافر الاحترام والتقدير
-
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
نستكمل الدروس التطبيقية العملية 2 البحث والإستعلام ( 2 ) حاليا لقد طلب منى المدير معرفة متى بدأ عقد عمل موظف ما ماذا نفعل ؟ خاصة لو لدينا قاعده بيانات ضخمه لعدد كبير من الموظفين والوقت يداهمنا والمدير يتحدث معى مباشرة على الهاتف الداخلى هناك طريقة خاصة يتيح الاكسل عملية البحث بالضغط على CTRL+F فيظهر لنا مربع حوار نكتب فيه مثلا اسم الموظف ونستمر فى البحث بشرط ان نكون واقفين على عمود اسم الموظف ولكن ما أبحث عنه هل هناك طريقة من خلال الفيجوال بيسك للقيام بذلك ؟ هناك الكثير من الطرق التى تؤدى هذا الغرض اذا المطلوب منى ان نقوم بعمل احتياط من ذلك الطلب المفاجىء من قبل المدير حتى لا نفاجىء بذلك ندخل لمرحله تنفيذ هذا الامر والكيفية التى نريد تنفيذ بها ذلك نجلس مع أنفسنا ونحلل الشيت الذى به جدول تجميعى لبيانات الموظفين ونسأل أنفسنا عده أسئلة س / ماذا لو قمت بالبحث من خلال الاسم ؟ ج / طبعا سنصل للنتيجة س / ماذا لو قمت بالبحث من خلال رقم الموظف أى كود الموظف ؟ ج / سنصل للنتيجة .. بل ستكون دقيقة مائة بالمائة لأننا نعرف أن رقم الموظف لن يتشابه مع موظف آخر ولكن هل أنا سأحفظ جميع أكواد الموظفين بأساميهم لدرجه لو سألنى أحد عن موظف هعرف رقمه الوظيفى س / ماذا لو طلب منى تجهيز كشف جميع العاملين بفرع ما أو مشروع ؟ اذن يجب أن يكون البحث مرتبط بإسم مشروع أو الفرع السؤال الذى يطرح نفسه كيف ننفذ ما سبق ؟ نبدأ بالبحث بكود الموظف بالإستعانه بالمثال العملى السابق والخاص بالترحيل نجهز شيت آخر ونسمية استعلام مثلا خاص بالاستعلام عن موظف ما من خلال الرقم الكودى للموظف بهذا الشكل نريد الاستعلام حاليا عن الموظف صاحب الكود رقم 1 اذا نقوم بالحفظ ونفتح محرر الأكواد وندخل الى محرر الاكواد الخاص بحدث الصفحة نفسها ونبدأ بكتابه الكود كما أشرنا سابقا بالدروس السابقة شكل الكود كاملا Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = [h2].Address Then [A2:f65000].ClearContents Dim Lr As Integer Lr = Sheets("list").Cells(Rows.Count, 2).End(xlUp).Row For Each cl In Sheets("list").Range("A2:A" & Lr) If cl = [h2] Then cl.Offset(0, 1).Resize(1, 6).Copy Range("A" & [A65000].End(xlUp).Row + 1).PasteSpecial xlPasteValues Application.CutCopyMode = False Application.EnableEvents = True End If Next End If End Sub ماذا يعنى هذا الكود ؟ نبدأ بتبسيط الأمر ثم شرح الكود عندما أردت ان أقوم بعمليه الاستعلام بكود الموظف جهزنا الشيت ووضعنا شرط ألا وهو الاستعلام بكود الموظف اذا عند تجهيز الشيت لا نحتاج الى عمود كود الموظف لأننا نبحث عن موظف معين من خلال الرقم الكودى الخاص به ولكننا نريد كافه البيانات الأخرى لذلك قمنا بوضعها كما هو موضح بشكل الشيت ونريد عند كل استعلام ان يتم مسح محتويات خلايا شيت الاستعلام تجهيزا للإستعلام عن موظف آخر هنا عندما تقوم بعملية البحث العادية التى يتيحها برنامج اكسل داخل شيت البحث أى شيت جدول كامل بيانات الموظفين من خلال الضغط على CTRL+F وتقوم بالوقوف على عمود كود الموظف قبل الضغط تظهر لك نافذة تكتب فيها رقم الموظف ثم تضغط موافق الى ان تجد الرقم المراد البحث عنه قد يكون هناك تكرار أو رقمين متشابهين فى بدايتهم فأحيانا تبدأ اكواد الموظفين بنظام معين تتشابه فيه الأرقام الأولى اذن توصلنا لتوضيح الفكرة لكى نكتب الكود · سنكتب الكود بحدث الشيت مع اختيار كل تغيير كما اشرنا سابقا · سنضع شرط كتابه الكود بالخلية المعنية بذلك · سنستخدم متغير لكى ننبه الجهاز أن يقوم بعملية تخزين البيانات ومن ثم جلبها لشيت الاستعلام · سنستخدم حلقة تكرارية لعملية البحث · سنطلب جلب بيانات كل موظف ماعدا الكود · سنقوم بمسح محتويات الكشف فى كل مرة سنستعلم فيها · ننبه الجهاز ألا تقوم بعمليه قص ولصق بل نريد نسخ فقط · نضع فى اعتبارنا انه لابد من البحث فى كافة أسطر شيت البحث فكيف نكتب الكود بما يتوافق مع تلك الأفكار الأمر ليس معقدا بل بعد توضيح المطلوب أصبح كتابه الكود أمرا يسيرا وستجد ان كل الأفكار السابقة هى الموجوده بالكود فقط شرح الكود - السطر الأول بداية الكود بحدث الشيت مرتبط بكل تغيير يحدث والمقصود بالتغيير اى ادخال بيانات جديده بالخلية H2 . - السطر الثانى يستعمل هذا السطر عندما يكون هناك اكثر من كود للصفحة الواحدة ، ويعمل هذا السطر على تجميد الاكواد الاخرى ويتم تنفيذ الكود في هذا الحدث فقط . - السطر الثالث هذا يعنى لو حصل اى تغيير بالخليه المعنيه بإدخال شرط البحث قم بتنفيذ التالى ولا ننسى إنهاء IF بنهاية الكود. - السطر الثالث قم بمسح المدى تجهيزا لإستقبال بيانات جديدة . - السطر الرابع اضافة وتسمية متغير لتخزين البيانات . - السطر الخامس المتغير يساوى بدءا من الصف الثانى بشيت البحث وحتى آخر صف . - السطر السادس حلقة تكرارية لكل خليه بشيت البحث بالمدى المحدد حتى آخر صف . - السطر السابع نضع الشرط من خلال قاعده IF ولا ننسى إنهائها بنهاية الكود - السطر الثامن وضعنا داله Offset مع الحلقة التكرارية C1 على أساس انه فى حال الحلقة التكرارية تعادل خليه البحث استخدم داله اوفيست التى تعين الخليه فى ورقة البحث وتقوم بنقل بيانات الأعمده بدءا من العمود التالى لعمود البحث ونسخ الأعمدة السته التاليه لعمود البحث بما يتوافق مع البيان داخل خلية H2 - السطر التاسع نسخ بدءا من العمود الأول + الصف الثانى فى المدى المحدد بالعمود A و ذكرنا الصف + 1 حتى لا ينسخ على صف رأس الجدول بشيت الاستعلام - السطر العاشرننبه البرنامج على ألا تقوم بعمليه قص ولصق - السطر الحادى عشر استخدمنا هذه الامر لإعادة تفعيل الاكواد الاخرى وذلك بوضع هذا السطر في نهاية الكود وذلك إرتباطا إلزاميا بالسطر الثانى ببداية الكود أى عند كتابة السطر الثانى بالكود يجب كتابة هذا السطر فى نهاية الكود - السطر الثانى عشر انهاء IF الأولى - السطر الثالث عشر تنفيذ الجزء التالى بعد IF - السطر الرابع عشر انهاء IF الثانية ثم إغلاق الكود نذهب لتطبيق الجزء الخاص بالإستعلام عن طريق اسم المشروع للإستفادة القصوى من الكود السابق يمكن الاستعانه به فى تنفيذ هذا الاستعلام كل ما عليك فقط التغيير بدلا من جعل الخليه H2 مرتبطه بكود الموظف نجعلها مرتبطه باسم المشروع وهكذا مجرد تباديل بسيطه بالكود نغير هذا السطر من : For Each cl In Sheets("list").Range("A2:A" & Lr) حيث أن عمود A يمثل عمود كود الموظف إلى : For Each cl In Sheets("list").Range("G2:G" & Lr) حيث أن عمود G يمثل عمود الفرع ونغير هذا السطر من : cl.Offset(0, 1).Resize(1, 6).Copy حيث أن مدى البحث والجلب للبيانات يبدأ من بعد العمود الأول بشيت البحث (0, 1) الى : cl.Offset(0, -6).Resize(1, 6).Copy حيث أن مدى البحث والجلب للبيانات يبدأ من قبل عمود الفرع او المشروع الى اول عمود بشيت البحث (0, -6) وبذلك اصبح الكود يقوم بالإستعلام بالمشروع مع تغيير شكل الشيت بإضافة عمود لكود الموظف فى بداية الشيت والإستغناء عن عمود الفرع والذى يمثل المشروع بالمثال العملى المرفق ليس به تطبيق للإستعلام بإسم المشروع تركته لمن يريد التطبيق والإستفاده ولكن به تطبيق آخر للإستعلام بإسم المشروع من خلال كود آخر وبطريقة أخرى وشكل الشيت كما بالصورة التالية والكود الخاص به مضاف بموديول مستقل مربوط من خلال زر بشيت الاستعلام واليكم الكود المستخدم Sub MZM_1() Dim iNm As String Dim Lr As Long, i As Long Dim R As Integer Dim M1 As Integer, M2 As Integer '''''''''''''''' iNm = Range("D2").Value M1 = Range("D3").Value2 M2 = Range("D4").Value2 '''''''''''''''' Range("C7:I500").ClearContents '''''''''''''''' Application.ScreenUpdating = False With æÑÞÉ2 Lr = .Cells(.Rows.Count, "G").End(xlUp).Row For i = 2 To Lr If iNm = CStr(.Cells(i, "G")) Then Select Case .Cells(i, "A").Value2 Case M1 To M2 R = R + 1 Cells(R + 6, "B").Value = R Cells(R + 6, "C").Resize(1, 7).Value = .Cells(i, "A").Resize(1, 2).Value Cells(R + 6, "D").Value = .Cells(i, "B").Value Cells(R + 6, "E").Value = .Cells(i, "C").Value Cells(R + 6, "F").Value = .Cells(i, "D").Value Cells(R + 6, "G").Value = .Cells(i, "E").Value Cells(R + 6, "H").Value = .Cells(i, "F").Value Cells(R + 6, "I").Value = .Cells(i, "G").Value End Select Application.ScreenUpdating = True End If Next End With End Sub بالمثال العملى تجد داخل الكود السابق الشرح الخاص به وتقبلوا منى وافر الاحترام والتقدير تطبيق 2.rar -
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ الكريم // زمزم بارك الله فيكم وجزاكم الله خيرا وتقبل منى وافر الاحترام والتقدير -
أخى فى الله الأستاذ الكبير // محمد الريفى بارك الله فيكم وزادكم الله من فضله ومن علمه تقبل منى وافر الاحترام والتقدير
-
هل أحد واجه هذه المشكلة من قبل ؟؟؟ ما الحل
محمود_الشريف replied to ibn_egypt's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ الكريم // ابن مصر راجع الرابطين التاليين http://www.officena.net/ib/index.php?showtopic=46928 http://www.officena.net/ib/index.php?showtopic=49313#entry299845 وتقبل منى وافر الاحترام والتقدير -
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
أخى الكريم الأستاذ // رامى جمال بارك الله فيكم على مروركم الكريم فيما يختص بإستفساركم عن أمر كتابة الخلية يمكن كتابة الخلية بإسمها المعتاد مثلا (( D8)) ويمكن كتابتها بشكلها ( 4 , 8 ) حيث تمثل 8 رقم الصف و 4 رقم العمود فالشكل الثانى يكتب فى حالات الترحيل والإستدعاء والإستعلام ويستخدم مع الدالات عموما وتوضع بين قوسين ( , ) وبينهم فاصله بهذا الشكل أما الشكل الأول يكتب مثلا عند الاشارة الى مسح خليه معينه وتوضع بين قوسين " " بهذا الشكل أو اضافة داله عدديه مثل D8+D4 وتوضع كل خليه بين قوسين [ ] بهذا الشكل بإختصار كل كيفية لها استخدام معين مرتبط بمعنى السطر المشار فيه الى تلك الخليه وتقبل منى وافرالإحترام والتقدير -
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
إخوانى فى الله الأستاذ القدير // ياسر خليل الأستاذ القدير// سعد عابد الأستاذ القدير// ابراهيم ابو ليله الأستاذ الكبير // محمد الريفى الأستاذ الكريم // مستخدم جديد 9 الأستاذ الكريم // محمد لطفى الأستاذ الكريم // محمد القمجى بارك الله فيكم وزادكم الله من فضله على مروركم الكريم ودعواتكم الطيبة وتقبلوا منى وافر الاحترام والتقدير -
حركة جديدة (تجليد الفورم) بابسط الطرق مع اداة Active Skin
محمود_الشريف replied to شوقي ربيع's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ القدير // شوقى ربيع من جعلنى أعشق الفورم وحركاتها بارك الله فيكم وزادكم الله من فضله ومن علمه والشكر موصول للأستاذ القدير // ضاحى الغريب من حببنى فى الفورم وجعلنى أتقن الكثير فيها بارك الله فيكم أجمعين وتقبلوا منى وافر الاحترام والتقدير -
أخى فى الله وبعد إذن إخوانى فى الله أساتذتى الكرام الأستاذ القدير // ياسر خليل الأستاذ القدير ومن جعلنى أعشق الفورم // شوقى ربيع الأمر ليس معقدا وليس سهلا هل عندما تعلمنا اللغة العربية تعلمنا فى البداية استخدام الفواصل أو متى توضع علامه الاستفهام أو الفاصله أو النقطه بل تعلمنا شكل الحرف ومن ثم تجميع الحروف ومن ثم قراءة الكلمه ومن ثم قراءة جمله صغيرة ومن ثم قراءة فقرة وفى كل مرحله نكتبها عده مرات لكى نحفظها ونتعرف على شكلها وكيف نستخدمها ومن ثم تعرفنا على الفواصل والنقط .... الخ فالأمر لا يؤخذ من النهاية الى البداية فبكل بساطه عند قرائتك للكود البرمجى فى عالم الفيجوال بيسك بمختلف استخداماته تجد كلمات ذات لون أزرق غامق وكلمات ذات لون أسود فالكامات ذات اللون الأزرق هى كلمات خاصه للكود البرمجى أى تم تخصيصها لا تستطيع أن تستخدمها فى أى شىء آخر غير الهدف منها فقط مثل كلمه DIM وهى الإعلان عن متغير ويكتب فى سطر مستقل وقد نكتب عده متغيرات فى سطر واحد نستخدم هنا الفاصله (( , )) التى بين الأقواس لكى نفهم البرنامج أن هناك عده متغيرات لكى يقوم الجهاز بتخزينها أيضا نريد تحديد مدى معين أى عده خلايا نضعها بين القوسين ( ) والقوسين تجدها دائما تستخدم فى اول سطر فى الكود العادى فعند كتابة كلمه SUB ثم اسم للكود تنتهى تلك الجمله بالقوسين ( ) أطرح على نفسى سؤال هام جدا هل أنا بتلك الإجابه السابقة فهمت ماذا تعنيه تلك العلامات ؟ لو أنا لست قارىء أو مستخدم جديد لتلك الأكواد وصريح مع نفسى ستكون الإجابه بالقطع لا لأنه بكل بساطه عندما تريد بناء بيت هل تبدأ بالديكورات أم بالأساسات أولا ؟ نبدأ بالأساسات أى القواعد ومن ثم الأعمده ومن ثم السقف ومن ثم الطوب الى أن تقوم بالتشطيب النهائى للبيت فالنصيحة أخى الكريم إبدأ بتبسيط الأمر على نفسك ولا تستعجل الأمور وهذا ما طلبه منى من تعلمت على ايديهم وإن لم يكن هذا الطلب مباشرا وموجها لى ولكن ما دام كتب ونشر على صفحات المنتدى فهو موجه للجميع وأدعو الله عز وجل لهم جميعا ولكل من تعلمت منه شيئا ولو يسيرا أن يحفظه بسر حفظه لكتابه الحكيم من شرور خلقه أجمعين وباب تحصيل العلم هو السؤال عن الذى لا أعرفه بشرط أن أكون صبورا ولا أستعجل الأمر حتى لا أستصعب الأمر فيما بعد وأترك الأمر كله وأعتذر للجميع على الإطاله وتقبلوا منى جميعا وافر الإحترام والتقدير
-
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
نستكمل سلسلة الدروس ندخل فى مرحله تطبيق ما تعرفنا عليه من خلال الدروس السابقة التطبيقات العملية ( 1 ) الترحيل السؤال الذى يطرح نفسه بعد ما تعرفنا على ما سبق الحديث عنه من الأدوات وبعض المعادلات والمتغيرات والكائنات والمدى والرسائل المستخدمه فى كتابة الأكواد سواء كان داخل موديول أو بحدث الملف ( المصنف ) أو بحدث الصفحه كيف نكتب كود ؟ كيف نستخدم هذه الأدوات ؟ حتى نخرج بكود منسق نستخدمه فى أمر ما رأيت أن نبدأ بالتعرف على كتابة الأكواد التى تستخدم فى أمر الترحيل حتى يكون أول تطبيق عملى نبدأ به للتعرف الملموس على لغة البرمجه داخل الاكسل وسيكون بإذن الله هناك سلسلة كاملة من التطبيقات العملية التى تستخدم فى عده مجالات خلاف الترحيل حتى نتعرف تماما على كيفية استخدام ما ورد بالدروس السابقة والإستفاده منها لذا أتمنى من متابعى هذه الدروس مراجعه ما سبق جيدا حتى يكون الامر سهلا ميسرا ملحوظة هامه جدا :- يجب أن نعرف جيدا أن هناك العديد من الطرق لكتابة كود ما ويكون شكله مختلف عن الكود الآخر ولكن نتيجته واحده فالهدف هنا من تلك الدروس أن نكون على الطريق الصحيح لفهم العملية التطبيقية للإستفاده وليس حصر جميع الاكواد الخاصة بموضوع ما ************************************* نبدأ التطبيق العملى الأول بهذه السلسلة التعليمية في المثال المرفق ستجد ورقتي عمل Invoice " " List" وسيتم إدخال البيانات في الورقه " Invoice " ثم بعد الإنتهاء نضغط على الزر لتنتقل في أماكن محدده بورقة العمل " List " حاليا أهيأ نفسى لكتابة البيانات التى أريدها فى ورقة خارجية يدويا لمعرفة ما هو المطلوب للشكل الذى أريده أتحدث الى نفسى الآن مطلوب منى أو أنا أريد كتابة بيانات خاصة بموظف ما فى شيت ثم ارحل تلك البيانات الى شيت آخر ولكن الشيت الثانى عبارة عن جدول تجميعى لبيانات جميع الموظفين إذن نقوم بعمل الآتى : أولا : نقوم بتحديد الذى نريده حتى تتضح لنا فكرة الترحيل ثانيا : تنسيق شيت الادخال بما يتناسب مع حجم البيانات المطلوبه لترحيلها لشيت الادخال مع توضيح اذا كان هناك بيانات اساسية يجب ادخالها من عدمه ومعرفة الخلايا التى سيتم كتابه البيانات داخلها لجميع خلايا ادخال البيانات وبالنموذج المرفق جميع البيانات يجب ادخالها ليتم الترحيل وسنتعرف على ذلك بالكود والخلايا هى كالتالى ( B3 , D3 , A5 , D6 , B8 , D8 ) ثالثا : تنسيق الشيت الثانى حتى يكون ملائما لشكل جدول تجميعى خاص بجميع الموظفين ويكون معلوم لدينا ان كل خليه ستنتقل الى خليه بعمود معين بترتيب معين أسفل بعض فى كل عمليه ادخال وترحيل بمعنى ان الخلية B3 بشيت الادخال سترحل الى خليه بالعمود B الخلية D3 بشيت الادخال سترحل الى خليه بالعمود C الخلية A5 بشيت الادخال سترحل الى خليه بالعمود D الخلية D6 بشيت الادخال سترحل الى خليه بالعمود E الخلية B8 بشيت الادخال سترحل الى خليه بالعمود F الخلية D8 بشيت الادخال سترحل الى خليه بالعمود G على أن يتم ترحيل كل عملية أسفل بعض بشيت التجميعى أى القائمة التى بها جدول تجميع جميع بيانات الموظفين شكل شيت الادخال شكل شيت تجميع البيانات تبقى لنا هنا كتابة الكود الذى سينفذ ما تخيلته ووضعته فى الشيت بإستخدام ما تعرفنا عليه بالدروس السابقة نبدأ بعون الله بحفظ ما سبق حتى لا يضيع هباء اثر انقطاع التيار أو خلافه ثم نقوم بفتح محرر الأكواد بالضغط على ALT+F11 ثم نقوم بإدراج موديول بالضغط على ادراج أو INSERT ونختار موديول تلقائيا سيتم فتح الموديول وربط الكود بزر للترحيل شكل اجمالى الكود المرفق بالمثال العملى بالموديول 1 كالتالى : Sub MZM_MoveData() Dim EndRow As Long If Sheets("Invoice").Range("B3").Value = "" Or Sheets("Invoice").Range("D3").Value = "" Or Sheets("Invoice").Range("a5").Value = "" Or Sheets("Invoice").Range("D6").Value = "" Or Sheets("Invoice").Range("B8").Value = "" Or Sheets("Invoice").Range("D8").Value = "" Then MsgBox prompt:="تأكد من إدخال كافة البيانات", Title:="خطأ" Else EndRow = Sheets("List").Range("A1").CurrentRegion.Rows.Count Sheets("List").Cells(EndRow + 1, 1).Value = EndRow Sheets("List").Cells(EndRow + 1, 2).Value = Sheets("Invoice").Cells(3, 2).Value Sheets("List").Cells(EndRow + 1, 3).Value = Sheets("Invoice").Cells(3, 4).Value Sheets("List").Cells(EndRow + 1, 4).Value = Sheets("Invoice").Cells(5, 1).Value Sheets("List").Cells(EndRow + 1, 5).Value = Sheets("Invoice").Cells(6, 4).Value Sheets("List").Cells(EndRow + 1, 6).Value = Sheets("Invoice").Cells(8, 2).Value Sheets("List").Cells(EndRow + 1, 7).Value = Sheets("Invoice").Cells(8, 4).Value Sheets("Invoice").Range("B3,D3,A5,D6,B8,D8").ClearContents MsgBox prompt:="تم ترحيل البيانات بنجاح", Title:="رسالة تأكيد" End If End Sub نكتب بداية ونهاية الكود كما أشرنا سابقا البداية بكلمه SUB ثم اسم للكود ثم القوسين المغلقين () والنهاية تلقائيا يتم كتابتها END SUB هنا لدينا عدد معلوم من الخلايا التى ستستخدم كناقل للشيت الآخر اى سيتم تخزينها لدى ذاكرة الجهاز ومن ثم سيتم ترحيلها ووضعها بالشيت الثانى اذا لابد من استخدام متغير داخل الكود ونقوم بوضع اسم لذلك المتغير وهو السطر التالى الموجود بالكود Dim EndRow As Long وضعنا على أنفسنا شرط لترحيل البيانات أو بمعنى آخر نريد أن نجبر المستخدم على ادخال كافة البيانات لكى يتم الترحيل ماذا نفعل ؟ نضع الشرط داخل الكود بالجملة الشرطية التى نستخدم فيها دائما قاعده IF نقول فيها انه فى حاله ادخال كافة البيانات بالخلايا المذكورة If Sheets("Invoice").Range("B3").Value = "" Or Sheets("Invoice").Range("D3").Value = "" Or Sheets("Invoice").Range("a5").Value = "" Or Sheets("Invoice").Range("D6").Value = "" Or Sheets("Invoice").Range("B8").Value = "" Or Sheets("Invoice").Range("D8").Value = "" Then وإلا سنقوم بتنبيه المستخدم أو انا لو نسيت خليه مثلا برساله تظهر لنا "خطأ", Title:= "تأكد من إدخال كافة البيانات" MsgBox prompt:= بخلاف ذلك فى حاله الالتزام بالشرط نفذ التالى _ ( الجزئية الخاصة السابق الحديث عنها أثناء تجهيز وتنسيق شكل الشيتين ) _ .. ولا ننسى انهاء جملة IF Else EndRow = Sheets("List").Range("A1").CurrentRegion.Rows.Count Sheets("List").Cells(EndRow + 1, 1).Value = EndRow Sheets("List").Cells(EndRow + 1, 2).Value = Sheets("Invoice").Cells(3, 2).Value Sheets("List").Cells(EndRow + 1, 3).Value = Sheets("Invoice").Cells(3, 4).Value Sheets("List").Cells(EndRow + 1, 4).Value = Sheets("Invoice").Cells(5, 1).Value Sheets("List").Cells(EndRow + 1, 5).Value = Sheets("Invoice").Cells(6, 4).Value Sheets("List").Cells(EndRow + 1, 6).Value = Sheets("Invoice").Cells(8, 2).Value Sheets("List").Cells(EndRow + 1, 7).Value = Sheets("Invoice").Cells(8, 4).Value Sheets("Invoice").Range("B3,D3,A5,D6,B8,D8").ClearContents "رسالة تأكيد", Title:= "تم ترحيل البيانات بنجاح" MsgBox prompt:= End If شرح الجزئية السابقة : - السطر الأول والثانى البحث عن أول صف فارغ للنقل وجعلنا العمود A مخصص للترقيم بشكل متسلسل تلقائيا مع كل ادخال وترحيل بشيت القائمة - السطر الثالث شيت القائمة الخلية التى بأول صف فارغ بالعمود الثانى تكون قيمته Sheets("List").Cells(EndRow + 1, 2).Value تساوى بشيت الادخال ( Invoice ) قيمة الخلية التى بالصف الثالث والعمود الثانى وذلك حتى نهاية السطر الثامن نلاحظ أن احدى طرق تعريف الخليه بالكود يكون كالتالى ( 8, 4 ) ورقم 8 يعنى الصف ورقم 4 يعنى العمود اى الخلية ( D8 ) - السطر التاسع معناه بعد الترحيل قم بمسح محتوى تلك الخلايا المذكورة - السطر العاشر ظهور رساله تأكيد بنجاح عملية الترحيل سؤال : هل هناك طرق أخرى لكتابه هذا الكود بشكل آخر ؟ الاجابة : نعم فعلى سبيل المثال لا الحصر وفى ضوء ما تم الإشارة اليه بالدروس السابقة Sub MoveData() Set li = ThisWorkbook.Sheets("List") Set inv = ThisWorkbook.Sheets("Invoice") Dim EndRow As Long If inv.Range("B3").Value = "" Or inv.Range("D3").Value = "" Or inv.Range("a5").Value = "" Or inv.Range("D6").Value = "" Or inv.Range("B8").Value = "" Or inv.Range("D8").Value = "" Then MsgBox prompt:="تأكد من إدخال كافة البيانات", Title:="خطأ" Else EndRow = Sheets("List").Range("A1").CurrentRegion.Rows.Count li.Cells(EndRow + 1, 1).Value = EndRow li.Cells(EndRow + 1, 2).Value = inv.Cells(3, 2).Value li.Cells(EndRow + 1, 3).Value = inv.Cells(3, 4).Value li.Cells(EndRow + 1, 4).Value = inv.Cells(5, 1).Value li.Cells(EndRow + 1, 5).Value = inv.Cells(6, 4).Value li.Cells(EndRow + 1, 6).Value = inv.Cells(8, 2).Value li.Cells(EndRow + 1, 7).Value = inv.Cells(8, 4).Value inv.Range("B3,D3,A5,D6,B8,D8").ClearContents MsgBox prompt:="تم ترحيل البيانات بنجاح", Title:="رسالة تأكيد" End If End Sub تم إضافة تخصيص من خلال جمله SET لتعريف اسماء الشيتات المستخدمه وأضفنا جملة ThisWorkbook لتحديد هذا الملف محل العمل واستخدمنا التخصيص للتعريف بإسم كل شيت من الشيتين اثناء جمله IF وكذلك فى تحديد الترحيل بين الشيتين بالأسطر الأخيرة المشار اليها بالشرح بالكود السابق بالمرفقات ملف اكسل به التطبيق العملى للمثال بالكودين وتقبلوا منى وافر الاحترام والتقدير شرح الترحيل.rar -
دروس فى VBA Excel _ نتعلم معا برمجه اكسل
محمود_الشريف replied to محمود_الشريف's topic in منتدى الاكسيل Excel
إخوانى فى الله الأستاذ الكريم // زمزم الأستاذ الكريم // صلاح الصغير الأستاذ الكريم // حماده سليمان الأستاذ القدير // ياسر خليل بارك الله فيكم على مروركم الكريم وتقبلوا منى وافر الاحترام والتقدير -
ارجو مساعدة عاجلة في ترحيل من جدول الى وصل استلام
محمود_الشريف replied to booss's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ القدير // العيدروس بارك الله فيكم وجزاكم الله خير الخير تقبل منى وافر الاحترام والتقدير -
أخى فى الله الأستاذ الكريم // خالد حداده بارك الله فيكم وجزاكم الله خيرا ملف أكثر من رائع تقبل منى وافر الاحترام والتقدير
-
دالة فرق التوقيت تعطى ناتج غير صحيح
محمود_الشريف replied to kinguter1's topic in منتدى الاكسيل Excel
أختنا فى الله الأستاذة القديرة // أم عبد الله بارك الله فيكم وجزاكم الله خيرا نسأل الله عز وجل لكم أن تكون جميع أعمالكم فى ميزان حسناتكم وتقبلوا منى وافر الاحترام والتقدير -
مساعدة فى كود انشاء قائمة بأسماء الشيتات
محمود_الشريف replied to طارق_طلعت's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ الكريم / طارق طلعت وبعد اذن الأستاذ الكبير // سليم حاصبيا جزاه الله خير الخير على حله الرائع واثراء للموضوع اليكم بالمرفقات نموذجين لعمل قائمة بأسماء الشيتات كلها متجدده مع اى تغير سواء كان اضافة شيت أو حذف شيت وتقبلوا منى وافر الاحترام والتقدير قائمة بأسماء الشيتات.rar -
دالة فرق التوقيت تعطى ناتج غير صحيح
محمود_الشريف replied to kinguter1's topic in منتدى الاكسيل Excel
أخى الكريم التوقيت بالشكل 8:00 لابد أن يكون بنظام 24 ساعه أى مثلا عندما تكون الساعه 3:00 بعد الظهر تكون بهذا التنسيق 15:00 أما أنتم طلبتم فى سؤالكم السابق أن تكون الساعه بنظام 12 ساعه فيجب اضافة AM / BM لكى يفهم الاكسل المطلوب ويعطى لك نتائج دقيقة أما ما تتحدث عنه على حد علمى عندما تكتب 8:30 فى خانه من : وتكتب 10:00 فى خانه الى سيظهر الناتج كالتالى (( بالساعات 1:70 )) أى بالدقائق تكون (( 102 دقيقة )) هنا الخطأ اننا لم نكتب بدلا من 8:50 كتبنا 8:30 فالاكسل قام بحسابها كرقم وليس توقيت وبالمرفقات نموذج بنظام 24 ساعه بالإضافة نموذج مصغر لما تريده مع التوضيح وتقبل منى وافر الاحترام والتقدير فرق التوقيت بنظام 24 ساعه.rar -
محتاج دورات مجانيه او مدفوعه عن بعد في excel vba
محمود_الشريف replied to ابولمى's topic in منتدى الاكسيل Excel
أخى الكريم اليكم بعض الروابط الاخرى المفيده فى تعلم فيجوال بيسك اكسل بخلاف ما تقدم به الاستاذ القدير المهندس // طارق محمود جزاه الله خير الخير http://www.officena.net/ib/index.php?showtopic=32470 http://www.officena.net/ib/index.php?showtopic=34088 http://www.officena.net/ib/index.php?showtopic=56000 http://www.officena.net/ib/index.php?showforum=51&prune_day=100&sort_by=Z-A&sort_key=last_post&topicfilter=all http://www.officena.net/ib/index.php?showtopic=47476 http://www.officena.net/ib/index.php?showtopic=45637 http://www.officena.net/ib/index.php?showtopic=46129 http://www.officena.net/ib/index.php?showtopic=51483 http://www.officena.net/ib/?showtopic=41923 http://www.officena.net/ib/index.php?showtopic=51423 http://www.officena.net/ib/index.php?showtopic=51464 وهناك المزيد والمزيد فقط قم بعملية البحث داخل المنتدى وتقبل منى وافر الاحترام والتقدير -
أخى فى الله الاستاذ الكريم // ابو ايمان بارك الله فيكم وما ارفقته بالمشاركه السابقة الهدف منه توضيح الترحيل عند اتمام 24 شهر ليس الا اما التفاصيل هذه تتوقف على السائل وتقبل منى وافر الاحترام والتقدير
-
أخى الكريم اليكم بالمرفقات نموذج بسيط جدا كمحاولة منى وعلى قدر فهمى لطلبكم الى أن ترفق النموذج الخاص بكم وتقبل منى وافر الاحترام والتقدير تجربة التاريخ.rar
-
أخى فى الله الأستاذ الكبير // محمد الريفى بارك الله فيكم وجزاكم الله خير الخير دائما أعمالكم تمتاز بالبساطه والسهل الممتنع وسهوله فهمها وتطبيقها يسر الله لكم جميع أموركم ودمتم فى حفظ الله وأمنه تقبل منى وافر الاحترام والتقدير
-
مساعدة في حساب قيمة الاجازة السنوية؟
محمود_الشريف replied to Selim Elsherif's topic in منتدى الاكسيل Excel
أخى فى الله الأستاذ الكريم // سليم الشريف وبعد إذن الأستاذة القديرة // أم عبد الله جزاها رب العالمين عنا خير الجزاء وجعل جميع أعمالها فى ميزان حسناتها اليكم نموذج كنت أعددته منذ فترة لأحد الساده الأعضاء به تفقيط المبلغ بالريال .. فى حال إذا كان قريبا من النموذج الذى تريده وبه حساب الفرق بين تاريخ بدء الدوام وآخر يوم دوام على شكل نموذج تسوية مستحقات ( اجازة ) قابل للطباعه بشكل منسق وتقبل منى وافر الاحترام والتقدير تسوية.rar -
بسم الله ما شاء الله إخوانى فى الله من أحببنى فى الفورم وبسط لى التعامل مع الفورم وتعاملت معه عبر المنتدى أستاذى القدير // ضاحى الغريب ومن جعلنى أعشق الفورم وحركاتها وتعرفت عليه من خلال إبداعاته أستاذى القدير // شوقى ربيع بارك الله فيكم وزادكم الله من فضله ومن علمه وآدام الله عليكم نعمتى الصبر والعطاء مجهود مشترك أكثر من رائع وليس التلميذ من يقيم أعمال أساتذته بل يفتخر بروائع أعمالهم رافعا رأسه الى السماء أنه تتلمذ ومازال تلميذا بمدارسهم على أيدى عمالقة ومبدعين شائت أقدار المولى عز وجل أن يجتمعوا بمنتديات أوفيسنا حتى تكون منارة لبث أشعه العلم لمن يريد أن يتعلم منهم ويستفاد من مدارسهم وخبراتهم وعلى رأسهم العلامه القدير // عبد الله باقشير جزاكم الله خير الخير أنتم وكل من تعلمت منه حرفا فى هذا المجال حفظكم رب العالمين من شرور خلقه أجمعين بسر حفظه لكتابه الحكيم وتقبلوا منى وافر الاحترام والتقدير
-
إضافة الدوائر الحمراء وحذفها
محمود_الشريف replied to ياسر خليل أبو البراء's topic in منتدى الاكسيل Excel
أخى فى الله الاستاذ الكريم // حافظ وبعد اذن استاذى القدير // ياسر خليل محاولة منى لتنفيذ طلبك كل ما عليك أن تستدعى الكود بوضعه فى حدث الشيت نفسه هكذا Private Sub Worksheet_Change(ByVal Target As Range) AddRedCircle End Sub جرب تغيير اى رقم الى 40 واليكم المرفقات نموذج الاستاذ القدير // ياسر وبه تطبيق لما طلبته وتقبلوا منى وافر الاحترام والتقدير Add-Remove Red Circles_1.rar