mk_mk_79 قام بنشر أكتوبر 17, 2014 قام بنشر أكتوبر 17, 2014 أستاذ / محمود الشريف بارك الله فيك شرح رائع جداً جداً جداً جداً جعله الله في ميزان حسناتك ونفع بك الإسلام والمسلمين 2 1
محمود_الشريف قام بنشر أكتوبر 18, 2014 الكاتب قام بنشر أكتوبر 18, 2014 إخوانى فى الله الأستاذ الكريم // ابو صلاح الأستاذ الكريم // زمزم الأستاذ الكريم // mk_mk_79 بارك الله فيكم على مروركم الكريم وتقبلوا منى وافر الاحترام والتقدير
محمود_الشريف قام بنشر أكتوبر 18, 2014 الكاتب قام بنشر أكتوبر 18, 2014 الدرس التاسع التعامل مع الكائنات الكائنات Objects الكائنات هي المكونات الأساسية لاى برنامج وهى الأدوات التي تحتوى على البيانات او تستخدم للتعامل مع البيانات مثال ذلك الجداول والنماذج والاستعلامات والتقارير فى Access ويتضمن Excel الكائنات التالية : 1 – التطبيق Application ويتمثل فى برنامج الإكسيل نفسه . 2 – المصنف Work Book ويتمثل فى كتاب العمل الذى يتم التعامل مع البيانات من خلاله. 3 - ورقة العمل Work Sheet وهى التى تحتوى على مجموعة البيانات 4 – النطاق Range ويتضمن مجموعة من الخلايا Cells وهى التى تحتوى على بيان واحد من البيانات سواء كان بيان نصى أو رقمى أو معادلة أو دالة ويكتب النطاق على النحو التالى Range(a1:c5) أى نطاق الخلايا من a1 الى c5 ولكل كائن من هذه الكائنات خصائص معينة Properties مثل الاسم Name والعنوان Caption ومجموعة من الأساليب Methods التي تستخدم في تنفيذ أمر معين على الكائن كما أن الكائن قد يقع عليه حدث يؤثر فى سلوكه ورد فعله كائن التطبیق Application Sub JASMEN1() Application.Caption = "JASMEN MAHMOUD ELSHRIEF" End Sub يقوم الكود بتوظيف الخاصية Caption على كائن التطبيق أي أن هذه الخاصية تقوم بتغيير الاسم العام للبرنامج فبدلا من كلمة مايكرسوفت سيظهر "JASMEN MAHMOUD ELSHRIEF" Sub JANA2 () Application.DisplayFormulaBar = False End Sub تقوم هذه الخاصية DisplayFormulaBar بإخفاء شريط الصيغ عند استخدام False وبالمقابل إظهاره عند استخدام TRUE Sub JOUMANA3 () Application.DisplayFullScreen = True End Sub تقوم هذه الخاصية DisplayFullScreen بجعل التطبيق في وضع ملء الشاشة وللرجوع طبعاً يجب ان نجعل القيمة False Sub MZM4 () Application.DisplayRecentFiles = False End Sub تقوم هذه الخاصية DisplayRecentFiles بعدم عرض المستندات الأخيرة في كائن تطبيق اكسيل وإذا أردنا إستعراضها طبعاً نجعلها تاخد القيمة TRUE Sub MZM5 () Application.WindowState = xlMaximized End Sub تقوم هذه الخاصية WindowState بعرض البرنامج فى حالة التكبير Sub MZM6 () Application.WindowState = xlMinimized End Sub تقوم هذه الخاصية WindowState بعرض البرنامج فى حالة التصغير Sub MZM7 () Application.WindowState = xlNormal End Sub تقوم هذه الخاصية WindowState بعرض البرنامج فى حالة العرض العادى كائن ورقة العمل Worksheet Sub MZM8 () Worksheets("sheet1").Visible = False End Sub يقوم الكود السابق بإخفاء ورقة العمل المسماه sheet1 وإذا أردنا إظهار الشيت نجعل القيمة TRUE Sub MZM9 () Worksheets(1).Name = "sheet1" End Sub يقوم الكود بإعادة تسمية الورقة 1 في ترتيب اكسيل بـ sheet1 Sub MZM10 () Worksheets("sheet1").Delete End Sub يقوم الكود بحذف الورقة المسماه sheet1 Sub MZM11 () Worksheets(1).Activate End Sub يقوم الكود بتنشيط الورقة المسماه sheet1 Sub MZM12 () Worksheets.Add End Sub يقوم الكود بإضافة ورقة جديدة Sub MZM13 () Worksheets(3).Copy End Sub يقوم الكود بنسخ الورقة الثالثة ضمن ترتيب ورقات المصنف 2
محمود_الشريف قام بنشر أكتوبر 18, 2014 الكاتب قام بنشر أكتوبر 18, 2014 تابع الدرس التاسع كائن المدى / النطاق Range نستعرض كائن من نوع النطاق أو ما يسمى بالمدى أو المجال وهو الأكثر شيوعاً أي أن أغلب الأكواد تشير بكثرة لهذا النوع من الكائنات Sub MZM14 () Range("d2:i10").Select End Sub يقوم الكود بتحديد المجال المشار إليه بين القوسين Sub MZM15 () Range("d2:i10").Columns(2).Select End Sub يقوم الكود بتحديد العمود الثاني بالمجال المشار إليه بين قوسين Sub MZM16 () Range("b10:f15").Columns(2).Value = 0 End Sub يقوم الكود بكتابة قيمة صفر في العمود الثاني من المجال المحدد بين القوسين Sub MZM17 () Range("c5:c10").Rows(1).Value = 100 End Sub يقوم الكود بكتابة قيمة 100 في الصف الأول من المجال المحدد بين القوسين وهو هنا الخلية C5 Sub MZM18 () Range("d2:i10").Cells(2, 3).Select End Sub يقوم الكود بتحديد الخلية الواقعة في الصف الثاني من العمود الثالث داخل المجال المحدد بين القوسين وهي الخلية F3 Sub MZM19 () Range("f10:i15").Cells(3, 2).Value = 200 End Sub يقوم الكود بكتابة قيمة 200 بالخلية الواقعة في الصف الثالث من العمود الثاني داخل المجال المحدد بين القوسين وهي هنا الخلية G12 Sub MZM20 () Worksheets(3).Range("f1:h5").Value = 100 End Sub يقوم الكود بكتابة قيمة 100 في المجال المحدد من الورقة الثالثة من أوراق المصنف Sub MZM21 () Range("d2:i10").Clear End Sub يقوم الكود بمسح محتويات المجال المشار إليه بين قوسين Sub MZM22 () Worksheets(3).Range("a1:c10").Font.Bold = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار خاصية Bold سماكه الخط Sub MZM23 () Worksheets(3).Range("a1:c10").Font.Italic = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار خاصية Italic إمالة الخط Sub MZM24 () Worksheets(3).Range("a1:c10").Font.Underline = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار خاصية Underline وضع خط تحت البيانات Sub MZM25 () Worksheets(3).Range("a1:c10").Font.Name = " Arabic Typesetting" End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار نوع الخط Arabic Typesetting Sub MZM26 () Worksheets(3).Range("a1:c10").Font.Size = 18 End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار حجم الخط 18 Sub MZM27 () Worksheets(3).Range("a1:c10").Columns(1).Font.Size = 18 End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالعمود الأول فقط قم باختيار حجم الخط 18 Sub MZM28 () Worksheets(3).Range("a1:c10").Rows.Font.Bold = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف لجميع صفوف المجال قم باختيار خاصية Bold Sub MZM29 () Worksheets(3).Range("a1:c10").Rows(3).Font.Bold = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالصف الثالث فقط قم باختيار خاصية Bold Sub MZM30 () Range("f20:i25").Cells.Font.Italic = True End Sub عند المجال المحدد من الورقة الثالثة في أوراق المصنف بجميع الخلايا قم باختيار خاصية Italic Sub MZM31 () ActiveCell.Formula = "=C1+D2" End Sub عند الخلية الحالية النشطة اكتب المعادلة المذكورة Sub MZM32 () Range("h10").FormulaR1C1 = "=r[-1]c[-1]+r[1]c[1]" End Sub لإدراج المعادلة بمقدار إزاحة اقل من صف وعمود لليمين + إزاحة اكبر من صف وعمود لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة G9+I11 Sub MZM33 () Range("h10").FormulaR1C1 = "=rc[1]+rc[2]" End Sub لإدراج المعادلة بمقدار إزاحة أكبر من صف وعمود لليسار + إزاحة اكبر من صفين عمودين لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة I10+J10 Sub MZM34 () Worksheets(3).Range("H10").Offset(1, 2).Value = 100 End Sub لإدراج القيمة 100 بمقدار إزاحة زائد عمودين لليسار وصف من الخلية المختارة وهي ستكون الخلية J11 3
محمود_الشريف قام بنشر أكتوبر 18, 2014 الكاتب قام بنشر أكتوبر 18, 2014 تابع الدرس التاسع لاحظ الاختصار في الأكسيل فبدلاً من الأسطر المتعددة يمكن الإشارة للمجال المختار بهذه الجملة WHIT وهي جملة تستخدم لتخصيص المجال أي عند المجال المعين بالخاصية المطلوبة افعل كذا Sub MZM () With Worksheets(3).Range("A1:h10").Font .Bold = True .Italic = True .Underline = True .Name = "ARIAL" .Size = 20 End With End Sub استخدمنا خاصية WHIT لتخصيص المجال المحدد بالخاصية المطلوبة FONT لعمل ما يلي من أوامر بعد سطر التخصيصويجب إنهاء جملة التخصيص WHIT بجملة End With Sub MZM () Worksheets(5).UsedRange.Font.Size = 16 End Sub تستخدم هذه الخاصية عند وجود بيانات متقطعة فهي تشير لكامل المجال المستخدم Sub MZM () Worksheets(3).Range("a1").CurrentRegion.Font.Size = 16 End Sub تستخدم هذه الخاصية عند وجود بيانات متقطعة أي البيانات المتصلة فقط بالمجال المذكور هي التي سيتم تنفيذ المطلوب عليها Sub MZM () Worksheets(3).Range("C2:G10").BorderAround ColorIndex:=5 End Sub يقوم الكود بإحاطة المجال المختار بحدود باللون الأزرق Sub MZM () Worksheets(3).Range("C2:G10").Interior.ColorIndex = 6 End Sub يقوم الكود بتلوين المجال المحدد باللون الأصفر وعلى ذكر ColorIndex قد يتساءل البعض كيف يمكن معرفة رقم اللون المختار ؟ وفيما يلى جدول بالرقم الخاص بكل لون قدر المستطاع مثال Sub MZM () With Cells(1, "D") .Value = "منتديات أوفيسنا التعليمية " .Font.Bold = True .Font.Name = "Arial" .Font.Size = 72 .Font.Color = RGB(0, 0, 250) .Columns.AutoFit .Interior.Color = RGB(0, 255, 255) .Borders.Weight = xlThick .Borders.Color = RGB(0, 0, 255) End With End Sub بالكود السابق استخدمنا الخاصية Cells للإشارة إلى الخلية الأولى من العمود D شرح الكود : - عند الخلية الأولى من العمود D أعطها قيمة نصية " منتديات أوفيسنا التعليمية" - تغليظ الخط قم باستخدام نوع الخط Arial - حجم الخط 72 - اختيار اللون الأزرق - استخدم خاصية الاحتواء المناسب لضبط النص داخل الخلية - جعل الخلفية باللون التركوازى - إحاطة الخلية برسم حد ذي حد غليظ - اختيار للحد لوناً أزرق - قم بإنهاء جملة WITH ويمكن الإشارة هنا إلى أن أنواع الـ .Borders.Weight هي كما يلي Sub MZM () With Range("A1:A5,H1:H5") .Value = "MAHMOUD ELSHRIE" .Font.Bold = True . Columns.AutoFit End With End Sub بالكود أعلاه : - تم الإشارة لمجالين مختلفين مع جملة WITH - تم كتابة قيمة نصية MAHMOUD ELSHRIE - تم اختيار نوع الخط الغليظ - تم عمل احتواء مناسب للأعمدة - ثم إنهاء جملة WITH ======================================================================== جميع ما سبق الحديث عنه بالنسبة للمدى كان محدد ومعلوم ، أي أن الأبعاد ثابتة ومحددة مثل الخلية A1 المدى A1 : H10 فماذا لو كان المجال المطلوب العمل ضمنه هو مجال متغير الأبعاد ؟ إذا یجب علینا التعرف على ما یلي جمل التخصیص SET AND LET كلاهما تستخدم لتخصيص قيم المتغيرات المعلن عنها ككائنات والفرق بينهما في أن جملة SET تستخدم لتخصيص المتغيرات من نوع كائن أما LET فتستخدم لتخصيص القيم الرقمية أو الحرفية للمتغيرات الأخرى مثال على جملة SET لأنها هى التى تهمنا الآن : Sub MZM() Dim R1 As Range Dim R2 As Range Dim MAHMOUD As Range Set R1 = Range("B2:C5") Set R2 = Range("F2:J5") Set MAHMOUD = Union(r1, r2) With MAHMOUD .Value = "MAHMOUD ELSHRIEF " .Font.Size = 20 .Font.Bold = True .Font.Italic = True .Font.ColorIndex = 5 .Borders.Weight = xlMedium .Borders.Color = RGB(0, 255, 255) .Interior.ColorIndex = 6 .Columns.AutoFit End With End Sub السطر الأول والثاني والثالث إعلان عن المتغيرات على أنها من النوع RANGE السطر الرابع والخامس تخصيص المجال المذكور للمجال الأول والثاني R1 ،R2 وذلك باستخدام جملة Set السطر السادس تخصيص المجال MAHMOUD الذي نريده أن يعبر عن دمج المجالين R1 ،R2 وذلك باستخدام الأمر Union والفائدة من ذلك كله تكٌمن في السطر السابع ، فعند تخصيص المجال MAHMOUD كمتغير من نوع نطاق ليعبر عن المجالين R1 ،R2 أمكن لنا أن نقرنه بالجملة WHIT ليأخذ الخصائص المطلوبة في الأسطر الباقية من الكود مثال آخر : Sub MZM () Dim Z As Worksheet Set Z = Application.Worksheets(2) Z.Name = "منتديات أوفيسنا التعليمية " End Sub هنا تم تخصيص الكائن من ورقة عمل للمتغير Z وبالتالي عند استخدام خاصية Name مع المتغير Z أمكن تغيير أسم الورقة باختصار فإن المتغير Z بفضل الجملة SET يعبر عن كائن ورقة العمل المحددة المدى الدینامیكى لا يزال الحديث متصلا بكائن النطاق RANGE والذى استغرق منا تقريباً معظم الحالات ولكن الملاحظ فيما سبق أننا قد نحتاج من حين لأخر لزيادة أو إنقاص حجم مساحة العمل أى المدى الذي نريد العمل ضمنه ، وبالتالي نضطر لتعديل أبعاد المدى من داخل الكود فماذا لو كان مجال العمل المدى متحرك أى ديناميكى ؟ عندها يصبح الكود والعمل المنجز أكثر فعالية ومفعماً بالحيوية فمثلا قد نعد تنسيقات لجدول بحجم ضخم ولكن لا نستخدم منه إلا الجزء اليسير وينتج عن ذلك إرهاق لموارد البرنامج وبطء ملحوظ في كفاءة ملف العمل والكود التالي يلخص فكرة المثال السابق : Private Sub Worksheet_Change(ByVal Target As Range) With Range("MYRANGE") .Font.Size = 16 .Font.Bold = True .Font.ColorIndex = 5 .Borders.Weight = xlMedium .Borders.ColorIndex = 3 .Interior.ColorIndex = 36 .Columns.AutoFit .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .RowHeight = 25 End With End Sub جميع اسطر الكود تقريباً تم شرحها سابقاُ فيما عدا أن الكود لا يبدأ بكلمة SUB المعهودة وذلك لأنه مقترن بحدث التغيير بورقة العمل عند المجال MYRANGE الديناميكي كذلك سطري الأوامر .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter واللذان يعنيان توسيط البيانات أفقيا وعمودياً أيضا سطر الأوامر .RowHeight = 25 والذي يعني جعل الصفوف متساوية بارتفاع 25 مرفق ملف pdf به كامل الدرس التاسع الدرس 9.rar 1
محمود_الشريف قام بنشر أكتوبر 19, 2014 الكاتب قام بنشر أكتوبر 19, 2014 الدرس العاشر الكائن Window لتغيير التسمية التوضيحية لأسم النافذة للمصنف النشط في الشريط العلوي من البرنامج Sub MZM () ActiveWindow.Caption = "منتديات أوفيسنا التعليمية" End Sub ويمكن أيضا جعلها بدون أي تسمية توضيحية Sub MZM () ActiveWindow.Caption = "" End Sub لتنشيط نافذة بعينها مفتوحه فى الخلفية Sub MZM () Windows("Book1").Activate End Sub يمكن ان يكون خيار التنشيط باختيار التالي Sub MZM () ActiveWindow.ActivateNext End Sub كما يمكن ان يكون خيار التنشيط باختيار السابق Sub MZM () ActiveWindow.ActivatePrevious End Sub لإنشاء إطار جديد لنافذة المصنف الحالي النشط Sub MZM () ActiveWindow.NewWindow End Sub لإخفاء إطار نافذة المصنف الحالي النشط ، طبعاً يمكن إظهاره القائمة إظهار أو اختيار TRUE إذا كنت داخل محرر الأكواد Sub MZM () ActiveWindow.Visible = False End Sub تكبير حالة النافذة الحالية للمصنف النشط Sub MZM () ActiveWindow.WindowState = xlMaximized End Sub تصغير حالة النافذة الحالية للمصنف النشط Sub MZM () ActiveWindow.WindowState = xlMinimized End Sub الوضع العادى لحالة النافذة الحالية للمصنف النشط Sub MZM () ActiveWindow.WindowState = xlNormal End Sub لإغلاق نافذة المصنف الحالي النشط Sub MZM () ActiveWindow.Close End Sub لإعطاء زووم بقيمة معينة لنافذة ورقة العمل الحالية Sub MZM () ActiveWindow.Zoom = 80 End Sub لإخفاء علامات التبويب لأوراق العمل بنافذة المصنف النشط Sub MZM () ActiveWindow.DisplayWorkbookTabs = False End Sub لإخفاء رؤوس الأعمدة والصفوف بنافذة ورقة العمل الحالية Sub MZM () ActiveWindow.DisplayHeadings = False End Sub لإخفاء شريط التمرير الأفقي بنافذة المصنف النشط الحالي Sub MZM () ActiveWindow.DisplayHorizontalScrollBar = False End Sub وللتحكم بشريط التمرير الأفقي من حيث الزيادة والنقصان يمكن التدرج بالشكل التالي Sub MZM () ActiveWindow.TabRatio = 1 End Sub Sub MZM () ActiveWindow.TabRatio = 0.5 End Sub Sub MZM () ActiveWindow.TabRatio = 0 End Sub لإخفاء شريط التمرير العمودي بنافذة المصنف النشط الحالي Sub MZM () ActiveWindow.DisplayVerticalScrollBar = False End Sub لعرض جميع الصيغ بنافذة ورقة العمل النشطة Sub MZM () ActiveWindow.DisplayFormulas = True End Sub لإخفاء خطوط الشبكة بنافذة ورقة العمل النشطة Sub MZM () ActiveWindow.DisplayGridlines = False End Sub لإعطاء لون محدد لخطوط الشبكة بنافذة ورقة العمل النشطة Sub MZM () ActiveWindow.GridlineColor = QBColor(14) End Sub لعمل معاينة لفواصل الصفحات للورقة النشطة حالياً Sub MZM () ActiveWindow.View = xlPageBreakPreview End Sub وللعودة لوضع العرض العادي بالورقة النشطة حاليا Sub MZM () ActiveWindow.View = xlNormalView End Sub لإخفاء القيم الصفرية بنافذة ورقة العمل النشطة Sub MZM () ActiveWindow.DisplayZeros = False End Sub لقراءة اسم الورقة الحالية في شكل Message Box Sub MZM () MsgBox Windows(1).ActiveSheet.Name End Sub لقراءة عنوان مدى محدد تم اختياره ليظهر العنوان في شكل Message Box Sub MZM () MsgBox ActiveWindow.RangeSelection.Address End Sub لقراءة عنوان الخلية النشطة بنافذة المصنف تم اختياره ليظهر العنوان في شكل Message Box Sub MZM () MsgBox Windows("أوفيسنا").ActiveCell.Address End Sub لعمل انقسام داخل نافذة ورقة العمل النشطة Sub MZM () ActiveWindow.Split = True End Sub لمعرفة عدد الأجزاء المنقسمة داخل نافذة ورقة العمل النشطة واسترجاع الناتج في شكل مسج Sub MZM () MsgBox ActiveWindow.Panes.Count End Sub لعمل تجميد الألواح داخل نافذة ورقة العمل النشطة Sub MZM () ActiveWindow.FreezePanes = True End Sub مرفق ملف pdf به كامل الدرس العاشر الدرس 10.rar 1
محمد لطفى قام بنشر أكتوبر 20, 2014 قام بنشر أكتوبر 20, 2014 السلام عليكم داله جديده بافكار جديده وجدتها هنا فى الموقع وحبيت اضيفها لهذا الموضوع RANKING.rar
mohaxnn قام بنشر أكتوبر 20, 2014 قام بنشر أكتوبر 20, 2014 السلام عليكم بجد بجد مجهووووووووووووووود رااااااائع جدا وربنا يجعله فى ميزان حسناتك يا مبدع جزاك الله خير
إبراهيم ابوليله قام بنشر أكتوبر 20, 2014 قام بنشر أكتوبر 20, 2014 السلام عليكم ورحمة الله وبركاته اخى الحبيب محمود مجهود كبير من شخص عظيم مبذول لاسعاد الاخرين فأنا شخصيا سعدت جدا بهذا الموضوع لما فيه من معلومات مفيده جدا والاجمل هو البساطه فى الاداء بارك الله فيك وجعل اعمالك فى ميزان حسناتك تقبل تحياتى
محمد لطفى قام بنشر أكتوبر 20, 2014 قام بنشر أكتوبر 20, 2014 السلام عليكم الموضوع كبير وشامل بصراحة خطير جدا جدا
عادل ابوزيد قام بنشر أكتوبر 20, 2014 قام بنشر أكتوبر 20, 2014 السلام عليكم ورحمه الله وبركاته اولاً اعتذر لعدم الرد مبكراً لقلة تواجدى على الجهاز استاذى الفاضل محمود الشريف انه لفخر لنا ولهذا المنتدى ان يكون موضوع بهذا الجمال والحلاوة مطروح بهذا الشكل لاستاذ يظهر عبقريته فى كل كلمه يكتبها وكل اشارة يشير اليها فهو بهذا العمل كالقاطرة التى تحمل الاف لتصل بهم للطريق الذى يريده كل شخص وما اجمل هذه القاطرة التى تظهر لنا خطوات هذا الطريق غير معصومين الاعين بل مشاركين متفاعلين جعل الله هذا العمل فى ميزان حسناتك ورزقك من حيث لا تحتسب وانار الله لك بصيرتك 1
محمود_الشريف قام بنشر أكتوبر 23, 2014 الكاتب قام بنشر أكتوبر 23, 2014 إخوانى فى الله الأستاذ الكريم // محمد لطفى بارك الله فيكم على مروركم الكريم واضافتكم للملف الذى به الداله الرائعه وثناؤكم على الموضوع الأستاذ الكريم // mohaxnn بارك الله فيكم على مروركم الكريم ودعاؤكم الطيب الأستاذ الكبير // ابراهيم ابو ليله بارك الله فيكم على مروركم الكريم وأسعدنى جدا ان الموضوع اسعدكم وشاكرا لكم ثناؤكم على الموضوع ودعاؤكم الطيب الأستاذ الكريم // عادل ابو زيد بارك الله فيكم على مروركم الكريم وثناؤكم على الموضوع وشاكرا لكم كلماتكم الجميلة الرائعة التى تزيد من حماس الآخرين وتدفعهم الى بذل جهد اكبر الأستاذ الكريم // عمرو طلبه بارك الله فيكم على مروركم الكريم وثناؤكم على الموضوع ودعاؤكم الطيب وتقبلوا منى جميعا وافر الاحترام والتقدير
محمود_الشريف قام بنشر أكتوبر 23, 2014 الكاتب قام بنشر أكتوبر 23, 2014 الدرس الحادى عشر حدث الملف workbook أو حدث الصفحة worksheet هناك أكواد يتم كتابتها داخل حدث الملف وتعنى بتطبيق هذا الكود على كامل الملف مثل اكواد الحماية أو عندما يتم فتح الملف تظهر رساله ما أو فورم للدخول أو ...الخ وهناك أكواد يتم كتابتها داخل حدث الصفحة وتعنى بتطبيق هذا الكود على هذه الصفحة فقط أو تنفيذ اجراء معين داخل هذه الصفحة وهناك أكواد تكتب داخل موديول ويتم ربطها بكود يكتب داخل حدث الصفحة وأيضا هناك أكواد تكتب داخل موديول ويتم ربطها بكود داخل حدث الفورم سنتحدث بهذا الدرس عن الأكواد التى تكتب داخل حدث الصفحة ولكن يجب أن نتعرف عليها وأين تكتب هذه الأكواد عند الدخول الى محرر الأكواد نجد على اليسار اسماء الشيتات أى الصفحات لو قمنا بالنقر عليها مرتين تفتح لنا صفحة على اليمين هذه تسمى محرر الأكواد الخاص بالصفحة نفسها أى حدث الصفحة كذلك مع حدث الملف نجد بهذه الصفحة مستطيلين بهم رأسين لسهم اتجاه للأسفل بالضغط على السهمين تظهر لنا قائمة نختار منها رأس الكود بما يتناسب مع المطلوب أى المراد تنفيذه من خلال هذا الكود كما بالصورة التالية عند اختيار الحدث selectionchange تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا (Private Sub Worksheet_SelectionChange(ByVal Target As Range End Sub ويتم تنفيذ الحدث عندما يتم تغيير الاختيار أى مثلا كلما قمنا بالإنتقال من خلية الى خلية أخرى على سبيل المثال Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static previous_selection As String If previous_selection <> "" Then Range(previous_selection).Interior.ColorIndex = xlColorIndexNone End If Target.Interior.Color = RGB(181, 244, 0) previous_selection = Target.Address End Sub ومعنى الكود أى كلما تم الإنتقال من خليه الى خلية اجعل خلفية الخلية المختارة اى النشطه اى التى تم الانتقال إليها خلفيتها باللون الأخضر ولا يتم احتفاظ الخليه بهذه الخلفيه عندما يتم الانتقال الى خليه أخرى عند اختيار الحدث Worksheet_Activate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_ Activate ( ) End Sub وهو خاص بعندما يتم تنشيط الورقة أى الدخول الى الورقة عند اختيار الحدث Worksheet_Deactivate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Deactivate ( ) End Sub وهو خاص بعندما يتم تنشيط ورقة عمل أخرى عند اختيار الحدث Worksheet_BeforeDoubleClick تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub وهو خاص بعندما يتم النقر مرتين على خلية ما عند اختيار الحدث Worksheet_BeforeRightClick تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) End Sub وهو خاص بعندما يتم الضغط على كليك يمين على الورقة عند اختيار الحدث Worksheet_Calculate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Calculate ( ) End Sub وهو خاص بعندما يتم حساب بيانات فى ورقة العمل أو إعادة حساب عند اختيار الحدث Worksheet_Change تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Change(ByVal Target As Range) End Sub وهو خاص بعندما يتم تغيير محتويات الخلايا بورقة العمل عند اختيار الحدث Worksheet_FollowHyperlink تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub وهو خاص بعندما يتم النقر على ارتباط تشعبى عند اختيار الحدث Worksheet_FollowHyperlink تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub وهو خاص بعندما يتم النقر على ارتباط تشعبى ننتقل الى حدث الملف workbook عند اختيار الحدث Workbook_Open تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Workbook_Open ( ) End Sub ويتم تنفيذ الحدث عندما يتم تغيير الاختيار أى مثلا كلما قمنا بالإنتقال من خلية الى خلية أخرى على سبيل المثال Private Sub Workbook_Open ( ) " منتديات أوفيسنا ترحب بكم MsgBox" End Sub ومعنى الكود أى عند فتح الملف سيتم عرض مربع حوار فى شكل رساله ترحب بك عند اختيار الحدث Workbook_BeforeClose تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub وهو خاص بتنفيذ تعليمات مباشرة قبل اغلاق الملف ومرفق مع هذا الدرس مثال عملى به بعض الأكواد المذكوره أعلاه وبعض الأحداث الخاصة بحدث الملف وأيضا أكواد لم تذكر بهذا الدرس خاصه بحدث الملف وأيضا تطبيقات أخرى مثل التعرف على كيفية استخدام التاريخ والوقت وتقبلوا منى وافر الاحترام والتقدير الدرس 11.rar مثال عملى.rar 1 1
islammahmoud قام بنشر أكتوبر 23, 2014 قام بنشر أكتوبر 23, 2014 الدرس الحادى عشر حدث الملف workbook أو حدث الصفحة worksheet هناك أكواد يتم كتابتها داخل حدث الملف وتعنى بتطبيق هذا الكود على كامل الملف مثل اكواد الحماية أو عندما يتم فتح الملف تظهر رساله ما أو فورم للدخول أو ...الخ وهناك أكواد يتم كتابتها داخل حدث الصفحة وتعنى بتطبيق هذا الكود على هذه الصفحة فقط أو تنفيذ اجراء معين داخل هذه الصفحة وهناك أكواد تكتب داخل موديول ويتم ربطها بكود يكتب داخل حدث الصفحة وأيضا هناك أكواد تكتب داخل موديول ويتم ربطها بكود داخل حدث الفورم سنتحدث بهذا الدرس عن الأكواد التى تكتب داخل حدث الصفحة ولكن يجب أن نتعرف عليها وأين تكتب هذه الأكواد عند الدخول الى محرر الأكواد نجد على اليسار اسماء الشيتات أى الصفحات لو قمنا بالنقر عليها مرتين تفتح لنا صفحة على اليمين هذه تسمى محرر الأكواد الخاص بالصفحة نفسها أى حدث الصفحة كذلك مع حدث الملف نجد بهذه الصفحة مستطيلين بهم رأسين لسهم اتجاه للأسفل بالضغط على السهمين تظهر لنا قائمة نختار منها رأس الكود بما يتناسب مع المطلوب أى المراد تنفيذه من خلال هذا الكود كما بالصورة التالية عند اختيار الحدث selectionchange تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا (Private Sub Worksheet_SelectionChange(ByVal Target As Range End Sub ويتم تنفيذ الحدث عندما يتم تغيير الاختيار أى مثلا كلما قمنا بالإنتقال من خلية الى خلية أخرى على سبيل المثال Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static previous_selection As String If previous_selection <> "" Then Range(previous_selection).Interior.ColorIndex = xlColorIndexNone End If Target.Interior.Color = RGB(181, 244, 0) previous_selection = Target.Address End Sub ومعنى الكود أى كلما تم الإنتقال من خليه الى خلية اجعل خلفية الخلية المختارة اى النشطه اى التى تم الانتقال إليها خلفيتها باللون الأخضر ولا يتم احتفاظ الخليه بهذه الخلفيه عندما يتم الانتقال الى خليه أخرى عند اختيار الحدث Worksheet_Activate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_ Activate ( ) End Sub وهو خاص بعندما يتم تنشيط الورقة أى الدخول الى الورقة عند اختيار الحدث Worksheet_Deactivate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Deactivate ( ) End Sub وهو خاص بعندما يتم تنشيط ورقة عمل أخرى عند اختيار الحدث Worksheet_BeforeDoubleClick تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub وهو خاص بعندما يتم النقر مرتين على خلية ما عند اختيار الحدث Worksheet_BeforeRightClick تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) End Sub وهو خاص بعندما يتم الضغط على كليك يمين على الورقة عند اختيار الحدث Worksheet_Calculate تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Calculate ( ) End Sub وهو خاص بعندما يتم حساب بيانات فى ورقة العمل أو إعادة حساب عند اختيار الحدث Worksheet_Change تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_Change(ByVal Target As Range) End Sub وهو خاص بعندما يتم تغيير محتويات الخلايا بورقة العمل عند اختيار الحدث Worksheet_FollowHyperlink تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub وهو خاص بعندما يتم النقر على ارتباط تشعبى عند اختيار الحدث Worksheet_FollowHyperlink تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub وهو خاص بعندما يتم النقر على ارتباط تشعبى ننتقل الى حدث الملف workbook عند اختيار الحدث Workbook_Open تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Workbook_Open ( ) End Sub ويتم تنفيذ الحدث عندما يتم تغيير الاختيار أى مثلا كلما قمنا بالإنتقال من خلية الى خلية أخرى على سبيل المثال Private Sub Workbook_Open ( ) " منتديات أوفيسنا ترحب بكم MsgBox" End Sub ومعنى الكود أى عند فتح الملف سيتم عرض مربع حوار فى شكل رساله ترحب بك عند اختيار الحدث Workbook_BeforeClose تلقائيا يتم كتابة رأس الكود ونهايته ويكون الكود هكذا Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub وهو خاص بتنفيذ تعليمات مباشرة قبل اغلاق الملف ومرفق مع هذا الدرس مثال عملى به بعض الأكواد المذكوره أعلاه وبعض الأحداث الخاصة بحدث الملف وأيضا أكواد لم تذكر بهذا الدرس خاصه بحدث الملف وأيضا تطبيقات أخرى مثل التعرف على كيفية استخدام التاريخ والوقت وتقبلوا منى وافر الاحترام والتقدير 1
islammahmoud قام بنشر أكتوبر 23, 2014 قام بنشر أكتوبر 23, 2014 (معدل) السَّلام عليْكم ورحْمة الله وبركاته. سَلامًا كَعَدِّ القَطْرِ وَالرَّمْلِ وَالحَصَى وَنَبْتِ الصَّحَارَى وَالنُّجُومِ الشَّوَاهِدِ سَلامًا يُبَارِي الرِّيحَ مِسْكًا وَعَنْبَرًا وَيَعْلُو بِهَامِ الوُدِّ فَوْقَ الفَرَاقِدِ وَأَهْلاً كَمَا هَبَّ النَّسِيمُ المُعَطَّرُ وَإِلاَّ فَمِسْكٌ طَيِّبُ النَّشْرِ أَظْفَرُ حيَّاكم الله وأحياكم للأمَّة، تُجدِّدون نضرَتَها، وتُعيدون شبابَها، وتَصلون أسبابَها، وتفتحون أبوابَها، وتَجمعون أصواتَ حُداتِها على إحْياء مواتِها وتدارك فواتِها. أَمَانَةُ الدِّينِ قَدْ شُدَّتْ بِعَاتِقِكُمْ فَمَا لِغَيْرِكُمُ تُلْقَى المَقَالِيدُ مَنْ أَوْرَدَ الآمَالَ حَوْضَ فَعَالِكُمْ فَلَهَا الأَمَانُ مِنَ انْ تُزَادَ وَتُصْرَفَا فَاللَّهُ يُرْضِيكُمْ وَيَرْضَى عَنْكُمُ وَيُحِلُّكُمْ غُرَفًا عَلَوْنَ وَرَفْرَفَا جزاكم الله الخير وجعل اروحكم في حواصل الطير تم تعديل أكتوبر 23, 2014 بواسطه islammahmoud
ريان أحمد قام بنشر أكتوبر 23, 2014 قام بنشر أكتوبر 23, 2014 مجهود كبير وتنسيق رائع وشرج سلس وجميل جعله الله في ميزان حسناتك
محمود_الشريف قام بنشر أكتوبر 24, 2014 الكاتب قام بنشر أكتوبر 24, 2014 اخوانى فى الله الأستاذ الكريم // اسلام الاستاذ الكريم // ريان احمد الاستاذ الكريم // محمد لطفى بارك الله فيكم وجزاكم الله خيرا وتقبلوا منى وافر الاحترام والتقدير
ا بو سليمان قام بنشر أكتوبر 25, 2014 قام بنشر أكتوبر 25, 2014 لدي مشكله وهي 1- قله الوقت للتعلم 2- لم نعرف البدايات الا ولى ولهذا لا نستطيع ان نبداء ونتابع بااااااااااارك الله في جهودكم
صلاح الصغير قام بنشر أكتوبر 28, 2014 قام بنشر أكتوبر 28, 2014 بارك الله فيك اخى . بصراحة اسلوب الشرح يعتبر من افضل الشروحات التى رأيتها فى هذا المنتدى نرجو الاستمرارية لتلك الدروس الرائعة كما نرجو من الادارة تثبيت الموضوع . ولكم جزيل الشكر
hamadasoliman قام بنشر أكتوبر 28, 2014 قام بنشر أكتوبر 28, 2014 السلام عليكم ورحمة الله وبركاتة مجهود جبار ..... وعمل رائع ......... نرجو التثبيت
ياسر خليل أبو البراء قام بنشر أكتوبر 28, 2014 قام بنشر أكتوبر 28, 2014 الناس اللي بتطلب التثبيت مفيش استجابة لمطالبها ليه يا إخوة يا مشرفين؟ 1
محمود_الشريف قام بنشر أكتوبر 29, 2014 الكاتب قام بنشر أكتوبر 29, 2014 إخوانى فى الله الأستاذ الكريم // زمزم الأستاذ الكريم // صلاح الصغير الأستاذ الكريم // حماده سليمان الأستاذ القدير // ياسر خليل بارك الله فيكم على مروركم الكريم وتقبلوا منى وافر الاحترام والتقدير
محمود_الشريف قام بنشر أكتوبر 29, 2014 الكاتب قام بنشر أكتوبر 29, 2014 نستكمل سلسلة الدروس ندخل فى مرحله تطبيق ما تعرفنا عليه من خلال الدروس السابقة التطبيقات العملية ( 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 2
الردود الموصى بها