اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

بسم الله الرحمن الرحيم

لقد سبق و قدمت عده دروس لتعلم vba للمبتدئين بعنوان شرح الماكرو و ستجدون الموضوع هنا

http://www.officena.net/ib/index.php?showtopic=12203

و نبدأ فى التقدم قليلا و خطوه بخطوه إلى هذه المرحله التى تعتبر للمتوسطين و اعتقادى ان النقطه الهامه فى البدايه التى يجب ان نعرفها هى كيف يتم الاشاره الهدف الذى تريد أن تتعامل معه 0

فأذا أردت الأشاره الى ورقه العمل تستطيع استخدام ثلاثه طرق :

Sheets(1)
و ذلك للأشاره الى ورقة العمل الأولى فى الملف و يجب ملاحظه انك إذا نقلت الورقة الى مكان أخر بالملف يجب تغيير الرقم الى المكان الجديد 0
Sheets("Sheet1")
و يتم الاشاره الى اسم الورقة بين علامتى تنصيص و هذه تعتبر أفضل الطرق و لكن لاحظ اذا غيرت أسم ورقه العمل يجب تغيير هذه الاسم فى صفحة vba إلى أسم الورقة الجديد 0
Sheet1
و هو الأسم التلقائى لورقة العمل و ستجد قائمة بأسماء ورقات العمل و بجوارها الأسم الذي قمت بتغييره عند الدخول فو صفحه vba الأشاره الى الخليه : فللأشاره الى الخليه الأولى بالصف الأول و العمود الأول تستطيع الاشاره بأحدى الطرق التالية
[A1]
Cells(1,"A")
Cells(1,1)
و للأشاره الى المجال
Range ("A1:A10")
و للاشاره الى مجالين مختلفين
Range("A1:A10,C1:C10")
فالطريقه المثلى (من وجهه نظرى) للأشاره لاى خليه بالصف و العمود الأول بورقه العمل الأول تستطيع استخدام هذا الكود
Sheets("sheet1").Cells(1, "A")
الان تستطيع التعامل مع الخليه فاذا اردت تجعل قيمتها = 1 استخدم هذا الكود
Sub s_Cells_Value()
    Sheets("sheet1").Cells(1, "A").Value = 1
End Sub
و بالنسبه للمجال يمكنك اضافه كود تالى لتحديد المجال بعد التنفيذ
Sub sRange_Value()
    Sheets("sheet2").Range("A1:A10") = 1
    Sheets("sheet2").Range("A1:A10").Select
End Sub

مرفق ملف

السلام عليكم

vba_01.rar

  • الردود 108
  • Created
  • اخر رد

Top Posters In This Topic

قام بنشر (معدل)

السلام عليكم

اخي هادي هدى الله بك الضالين و اسعف المحتاجين ببلسم علمك و شروحك

ولى اقتراح وهو

ان يكون التعليم على طريقة س ج

و لكن اسئله لا تكون عامه

مثل كيف اعمل برنامج كونترول او حساب عملاء الخ

لكن سؤال عن جزئيات يكون جوابها سطرين (مختصر)

و بما ان من سيشارك سيكون عنده الحد الادنى من المعرفه بما يتعلق بالبيسك او بما يحاول القيام به ستكون المشاركات على شكل تلميحات و ردود سريعه

ابدها بسوال لحضرتكم

اذا اردت القول :

اذا كانت اي خليه من خلايا العمود b تحتوي على قيمه فان الخليه المناظره لها من العمود a = now() ؟

او مثلا كيف اختار نطاقين متباعدين ؟

تم تعديل بواسطه ابو اسامة العينبوسي
قام بنشر

بسم الله الرحمن الرحيم

مشكور أخى ايوب صابر

أخى أسامه

عندما قرات اقتراحك خشيت ان نخرج عن التسلسل التدريجى للدروس أو يكون السؤال فى مرحله متقدمه ليست مجالها فى الوقت الحالى , و لكن عندى قيامى بالرد على أسالتك أكتشفت انها فرصه مناسبه للتطبيق على الدرس السابق مع التعليق عليها , عموما الراى للجميع و لكنى اقترح على من يقوم باضافه فكره أو كود ان يقوم بشرحها 0

س : اذا كانت اي خليه من خلايا العمود b تحتوي على قيمه فان الخليه المناظره لها من العمود a = now() ؟

سنقوم بالتطبيق على الشرح السابق بثلاثه طرق للاشاره الى خليه واحده و النتيجه واحده , وقد قمت باستخدام

ClearContents لمسح محتوات الخيه قبل تنفيذ الكود 0

Sub sIf_01()
    Range("A1").ClearContents
    If Sheets("Sheet1").[B1].Value <> "" Then
        Sheets("Sheet1").[A1].Value = Now
    End If
End Sub
Sub sIf_02()
    Range("A1").ClearContents
    If Sheets(1).Cells(1, "B").Value <> "" Then
        Sheets("Sheet1").Cells(1, "A").Value = Now
    End If
End Sub
Sub sIf_03()
    Range("A1").ClearContents
    If Sheet1.Cells(1, 2).Value <> "" Then
        Sheets("Sheet1").Cells(1, 1).Value = Now
    End If
End Sub
مع ملاحظه ان علامه <> تعنى لا تساوى و علامتى التنصيص "" معناها الخيه فارغه س : كيف اختار نطاقين متباعدين ؟ لقد ذكرت اطريقه بالشرح و اليك الكود
Sub sRange_Select()
    Range("A1:A5,C1:C5").Select
End Sub

مرفق ملف

السلام عليكم

vba_02.rar

قام بنشر

سعادة الاستاذ / هادى سالم

هذا العمل الرائع كنا ننتظره من زمان

فجزاك الله خير الجزاء

واود ان اطلب منك طلب ارجو النظر اليه بعين الاعتبار وهو

عمل هذه المحاضرات على هيئة ملف وارد او pdf لكى نتمكن من الاحتفاظ بها

وشكرا جزيلا

قام بنشر

السلام عليكم

الأستاذ و المُعلم الفاضل / هادى سالم

دائما ما تبهرنا و تمدنا بشعاع العلم و النور الذى ينير لنا درب التعلم

و سنظل ننتظر المزيد منك

المزيذ الذى لا يجد من الكلمان ما يمكن ان يعبر به

و الذى تعجز الألسنه عن رد شكرك و جميلك

أستاذنا / هادى سالم

أكرمك الله

و ننتظر المزيد لكل من يريد المزيد

تحياتى

قام بنشر

السلام عليكم و رحمه الله و بركاته

سنقوم بالتطبيق على الشرح السابق بثلاثه طرق للاشاره الى خليه واحده و النتيجه واحده

هنا اخي التطبيق كان على خليه واحده

كيف اذا اردنا تعميم الكود على جميع العمود B

قام بنشر

السلام عليكم ورحمة الله وبركاته

اخى العزيز هادى

بارك الله فيك واهنيك على هذا الموضوع الجميل وعندى ملاحظه لو سمحت لى اخى الحبيب

ان الموضوع عبارة عن شرح متدرج للمستوى المتوسط للفيجوال واسلوبك اكثر من رائع فلابد ان تكون المداخلات للاخوة الاعضاء تكون مرتبطه بالنقطة او الموضوع الذى تم طرحه وعدم تعديه فى سؤال اخر وموضوع اخر حتى لا يسبب بلبله للمتابع هذا الموضوع وطبعا الموضوع للتعليم ولا يكون فيه استعجال للمعلومات

لكن من الممكن ان يفتح موضوع منفصل تماما ويكون مختص للرد على الاسئلة المختصه بالفيجوال ويا حبذا لو كان ركن منفصل يتبع الاكسيل ليروى ظماء المتعطشين لاجابة اسئله كثيرة فى هذا المجال والمنتدى بسم الله ما شاء الله يضم خبرات فى الفيجوال يستطيعون الرد على جميع الاستفسارات

وبما ان موضوعك مفتوح للاضافات اخى هادى اسمح لى ان أضيف معك لشرح بعض الاكواد لآشاركك الاجر والثواب فى المرة القادمة

الرجاء المتابعة والاستمرار لهذا الموضوع ومن الممكن تجميع المادة العلميه بعد ذلك فى كتاب الكترونى

تقبل تحياتى

قام بنشر
بسم الله الرحمن الرحيم



السلام عليكم و رحمه الله و بركاته

سنقوم بالتطبيق على الشرح السابق بثلاثه طرق للاشاره الى خليه واحده و النتيجه واحده

هنا اخي التطبيق كان على خليه واحده
كيف اذا اردنا تعميم الكود على جميع العمود B


سأقوم بالتنفبذ ان شاء الله فى الوقت المناسب


اخى خالد نور

فعا لقد كتبت ما كنت انوى كتابنه بالضبط و برجاء من الجميع اتباع ما قاله اخى خالد

وبما ان موضوعك مفتوح للاضافات اخى هادى اسمح لى ان أضيف معك لشرح بعض الاكواد لآشاركك الاجر والثواب فى المرة القادمة




اخى خالد نور مشاركتك تثرى الموضوع مرحبا بك معى
و تخطيطى فى هذه الدروس

الأشاره

الشروط

دالات التكرار

و مايستجد من أعمال

فضيف ما شاءت فى مراحل الشرح



السلام عليكم
قام بنشر

بسم الله الرحمن الرحيم

الدرس الثانى

انتهينا فى الدرس السابق من الاشاره الى خليه او مجال و تعبئتها بقيمه و سندبدأ الان بترحيل بيانات خليه الى خليه اخرى او مجال الى مجال اخر

فأذا أردنا ترحيل البيانات من الخليه (A1) فى "Sheet1" الى الخليه (A2) فى "Sheet2" ثم جمع الخليتين بالخليه (A3 ) فى "Sheet2"

هناك طرفان فى المعادله :

الطرف الاول : هو المجال اذى تريد تعبئته بالبيانات “Sheet2”

الطرف الثاني : هو المجال الذى تستورد البيانات منه “Sheet1”

Sub sCells_Move()
    Sheets("Sheet2").Range("A1:A3").ClearContents
    Sheets("Sheet2").Cells(1, "A").Value = Sheets("Sheet1").Cells(1, "A").Value
    Sheets("Sheet2").Cells(2, "A").Value = Sheets("Sheet1").Cells(2, "A").Value
    Sheets("Sheet2").Cells(3, "A").Value = _
    Sheets("Sheet2").Cells(1, "A").Value + Sheets("Sheet2").Cells(2, "A").Value
End Sub
السطر الاول يقوم بمسح محتويات الخلايا السطر الثانى و الثالث يقوم بنقل قيم الخلايا من الورقه الاولى الى الثانيه السطر الرابع و الخامس سطر واحد (و لكتابه الكود على سطرين حتى تستطيع ان تقراه بسهول , بعد اخر حرف فى السطر أضغط مسافه ثم علامه "_" ثم أنتر) و يقوم هذا السطر بجمع الخليه (A1) مع (A2) و وضعها فى (A3) _____________________________________________________________________________ ويمكنك ترحيل بيانات مجال و فى بعض الاحيان تغنيك عن استخدام عميله النسخ و اللصق باكود التالى :
Sub sRange_Move()
    Sheets("Sheet2").Range("A1:A3").ClearContents
    Sheets("Sheet2").Range("A1:A3").ClearContents
    Sheets("Sheet2").Range("A1:A3").Value = Sheets("Sheet1").Range("A1:A3").Value
End Sub

الكود لا يحتاج شرح

مرفق ملف

السلام عليكم

vba_02.rar

قام بنشر

خاصية Cells

على بركه الله

- هى خاصية الاشارة الى النطاق على شاكله Range

وهذه بعض الاكواد التى تبين عملها مع ملف مرفق

 Worksheets("sheet1").Cells(1, 1) = 5
وهذا كود لامكانيه استخدام خاصية Calle فى كائن Range وهو لادخال قيمة معينة او الاشارة لخلية تقع ايمن الخلية النشطة او اسفلها وهكذا وتستطيع ان تحددها انت بنفسك او المستخدم بتحديده للخليه النشطه ذاتها وهذه الخاصيه نفعها عظيم جدا سوف تظهر فى المراحل المتقدمة بعد ان ينتهى اخى هادى من المرحله المتوسطة
 ActiveSheet.Cells(2, 6) = 10
 ActiveCell.Cells(1, 2) = 15
وهذا كود لمسع جميع محتويات الورقة
ActiveSheet.Cells.ClearContents
وهذا كود لادخال رقم معين فى خليه اسف الخلية النشطة او المفعله مع امكانيه عرض القيمة فى رساله
ActiveCell.Cells(5) = 20
    MsgBox ActiveCell.Cells(5)

الملف المرفق يظهر كل هذه المعاملات

تقبلو تحياتى

Cells.rar

قام بنشر (معدل)

أساتذتنا الكرام / هادي سالم - خالد نور

في نفس الإطار عندي سؤال لو تكرمتم

إذا أردت الإشارة إلى الورقة التي أعمل بها بالكود لعمل نسخة من نفس الورقة بالملف وطبعاً كل مرة سيختلف إسم الورقة عند تنفيذ الكود فما هو الحل للإشارة إلى الورقة بشكل مطلق بغض النظر عن إسمها عند كتابة الكود .

أرجو أن أكون قد نجحت في توصيل الفكرة ولتوضيحها أكثر إليكم ما قمت به :

قمت بعمل ماكرو لنسخ الورقة التي أعمل عليها ووضع النسخة الجديدة منها قبل الورقة المسماة SHEET2 فنتج عن هذا الماكرو الكود التالي

Sub NEWVOUCHER()
'
' NEWVOUCHER Macro
'

'
Sheets("شيك الأهلي (4410)").Select
Sheets("شيك الأهلي (4410)").Copy Before:=Sheets(43)

End Sub

والمطلوب أن يتغير إسم الورقة حسب إسم الورقة التي أقوم فيها بتنفيذ الماكرو مثلاً أن أعمل بورقة إسمها شيك الأهلي (4455) فالمطلوب أن يقوم بنسخ هذه الورقة وليس الورقة شيك الأهلي (4410) .

سامحوني على الإطالة وأتمنى أن أجد لديكم الحل .

أشكركم وتقبلوا تحياتي .

ابو عبدالله

تم تعديل بواسطه هادى سالم
قام بنشر

بسم الله الرحمن الرحيم

اخى ابو عبدالله

أول كود قمت باضافته هو الاشاره برقم ورقه العمل

Sub sSheet()
    Sheets(1).Select
End Sub

الكود السابق يشير الى الورقه الاولى بالملف دون الحاجه الى اسم الورقه

السلام عليكم

قام بنشر

السلام عليكم و رحمه الله و بركاته

حتى يبقى الموضوع حيا (هناك عشرات المشاركات عن البيسك)

اطرح سؤال

1- كيف اشير الى اخر ور قه عمل في المستند ؟

2- كيف اعرف عدد الاوراق في مستند ؟

اخوك ابو اسامه

قام بنشر
السلام عليكم و رحمه الله و بركاته

حتى يبقى الموضوع حيا (هناك عشرات المشاركات عن البيسك)

اطرح سؤال

1- كيف اشير الى اخر ور قه عمل في المستند ؟

2- كيف اعرف عدد الاوراق في مستند ؟

اخوك ابو اسامه

بسم الله الرحمن الرحيم

لكى تشير الى اخر ور قه عمل في المستند يجب عد اوراق العمل اولا

سنقوم بتعريف متغير

ويجب اولا ان نعرف ما هو المتغير

هو حجز مكان فى الذاكره ليتم استدعاءه متى شئت و واضح من اسمه انك تستطيع تغييره , و يمكن التحكم فى نوع المتغير (Text,Date,Integer) (نصى , تاريخ , رقمى)

Sub sCount()
    Dim Cont As Integer
    Cont = Sheets.Count
    MsgBox (Cont)
End Sub
فى السطر الاول قمنا بتعرييف متغير رقمى اسمه Cont السطر الثانى يقوم بعد أوراق العمل السطر الثالث يقوم بعرض عدد أوراق العمل (المتغير "Cont") فى MsgBox و اذا اردت الاشاره الى اخر ور قه عمل في المستند ستخدم نفس الكود السابق مع استبدال اخر سطر MsgBox ب Select Sheets
Sub sSelect()
    Dim Cont As Integer
    Cont = Sheets.Count
    Sheets(Cont).Select
End Sub

مرفق ملف

السلام عليكم

Cont.rar

  • 2 weeks later...
قام بنشر

السلام عليكم ورحمة الله وبركاته

مؤشر غير صحى

بصراحة لما الاخ هادى بداء فى هذا الموضوع كنت متوقع ان يكون هذا الموضوع من الاهمية الكبيرة التى ينتظرها الكثيرين للتعلم وليس اللجؤ للحلول الجاهزة وكنت متوقع ايضا ان يكون فيه اكثر عدد من المداخلات والاضافات وان يثبت الموضوع حتى الانتهاء منه ولكن مشاهدات فوق 550 مشاهدة والمداخلات لا تذكر وانا احس باحساسى المهنى ان الاخ هادى لغى ما كان ينوى فعله فى استكمال السلسلة التى كنا ننتظرها ولا ادرى هل هذا صحيح ام لا وأرجو ان يخيب ظنى ويكمل ما قد بدئه ولاكن بشرط ان يعبر الاعضاء اذا كانو فعلا ينتظرون ان يتعلموا الفيجوال بيسيك فى الاكسيل ام لا فكل امرء محتاج ان يعرف مجهوده اين سيذهب والا ما فائده المجهود فمشاهدتك للموضوع لا تكفى تفاعل حتى ولو بكلمة تشجيع تعين اخاك على مساعدة الجميع ومساعدتك

وانا اول الاعضاء انادى الاخ هادى باستكمال السلسلة التعليمية

قام بنشر
ولاكن بشرط ان يعبر الاعضاء اذا كانو فعلا ينتظرون ان يتعلموا الفيجوال بيسيك فى الاكسيل

بسم الله الرحمن الرحيم

[]تفاعلا مع ماقاله الاستاذ/خالد نور
احب ان اقول انني شخصيا من الذين تعلموا الاكسيل عن طريق هذا المنتدي الرائع ،وقد اود كثيرا الاستفادة من الخبرات العديدة وخاصة تطبيقات الفيجوال البيسك واستخدامها مع الاكسل .

انني اتفاخر بحق بهذا المنتدي وعباقرته .

ارجوكم لاتحرمونا خبراتكم فهي رصيدكم العظيم يوم القيامة

فخيركم من تعلم العلم وعلمه

.
والسلام عليكم ورحمة الله وبركاته
قام بنشر

السلام عليكم

بعد اذن الاخوه الكرام خالد نور و هادي سالم

كنت اقترحت ان يكون هذا الموضوع على شكل س و ج ؟

اي سؤال و جواب لان الموضوع كبير جدا و تفريعاته كثيره و متعدده و يصعب التمييز بين المهم و الاهم

لذك السؤال هو خير وسيله للتعلم

كما هناك كنز كبيير جدا من المعلومات قد يستهين به الاخوه وهو ال help الموجود في الفيجوال بيسك الملحق مع الاكسل

قام بنشر (معدل)

جزاك الله كل خير على هذا الإبداع والأكثر من رائع

نورت لنا درب تعلم الفيجوال بيسك بسهولة وسلاسة وبساطة أسال الله تعالى أن ينور لك طريقك للجنة يارب العالمين

وكلام الأستاذ خالد نور سليم وصحيح 100% وياليت يستمر الأستاذ هادي بما بدء به وبنفس الهمة والقابلية

ونحن معكم بإذن الله

تم تعديل بواسطه mfawaz
قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته

الأستاذ و المُعلم الفاضل / هادى سالم

أشكرك جزيل الشكر على هذه الدروس الرائعة وجزاك الله عنا كل خير ونريد منك المزيد بإذن الله

وأسأل الله تعالى أن يكتب لك في كل حرف 1000 حسنة وأكثر

يرجى أن تكون الدروس هذه في ملف PDF حتى نحتفظ بها ونرجع لها أي وقت خوفاَ من الضياع

والله في عون العبد مادام العبد في عون أخيه

تم تعديل بواسطه mfawaz
قام بنشر

السلام عليكم ورحمة الله وبركاتة

اخوانى الاعزاء / هادى سالم

/خالد نور

/ ابو اسامة

معكم حق المشاركات قليلة فى هذا الموضوع ويرجع قلتها لاهميتها ولكننا جميعا متابعين الموضوع باهتمام بالغ ولاهميتة لم نحاول التدخل اثناء تسلسل الموضوع حتى لانفقدة جمال تسلسلة والاسلوب المطروح بة يجعلة واضح وسهل للاستيعاب

وباستمرار هذة الدروس سيكون هذا الموضوع مرجع لكل المهتمين ببرمجة الاكسيل

لا تلومونا على عدم الرد _ فنحن لن نريد ان نملا الموضوع بردود تخرجنا من تمتعنا من هذا الابداع

ولكم منا اسمى الدعوات وان كنا لم نكتبها فقلوبنا تدعوا لكم دائما

اخوكم احمد _ بورسعيد

قام بنشر

السلام عليكم ورحمة الله وبركاته

إخواني الأساتذة هادي سالم / خالد نور

أشكركم جزيل الشكر على ماتقدموه من دروس شيقة في برمجة الإكسل جزاكم الله كل خير

أنا مبتدئ بالبرمجة وماشي معكم بالشرح خطوة بخطوة

عرفت كيفية إنشاء ماكرو وكان الموضوع سهلاً والحمد لله

لكن عندما دخلت في كتابة الكود بالموديول ليفتح البرنامج على صفحة الترحيب Wellcome حدث خطأ وإليكم الملف لأعرف أين أخطأت

وأرجوا أن يكون الشرح في تصحيح الخطأ بشكل واضح حتى لاأقع فيه مرة أخرى

أسأل الله أن يكتب لكم المثوبة والغفران ويدخلكم الجنة بدون حساب

إليكم الملف المرفق..........

_____.rar

قام بنشر

السلام عليكم ورحمة الله وبركاته

اولا احب ان اشكر الادارة للاستجابة فى طلب تثبيت الموضوع لما له من اهميه

أما بالنسبة لسؤال الاخ mfawaz

إستخدام حدث Open

هو حدث يبداء عند فتح الملف ويقوم بتنفيذ إجراءOpen _ Workbook ويستخدم هذا الاجراء للقيام بالمهام الآتيه:

• تنشيط ورقة عمل معينة

      Sheets("well come").Select
• عرض رسائل أفتتاحية
MsgBox " اهلا بكم ...مع تحياتي خالد نور "
• فتح مصنفات أخرى • إعداد أشرطة أدوات أو قوائم مخصصة
Application.CommandBars("Standard").Visible = False
    Application.CommandBars("Formatting").Visible = False

• التأكد من تحقيق شروط معينة

باستخدام قاعدة if

ويمكن عند فتح الملف ان تلغى القيام بعمل هذا الاجراء بطريقة سهلة بأن تقوم بالضغط المستمر على مفتاح shift فى أثناء فتح الملف

وهذا ملف مرفق يوضح هذ العمليه مع اضافة كود عند الغلق لارجاع القوائم الى حالتها الطبيعية ولنا لقاء اخر حول حدث الغلق بإذن الله

وتقبلو تحياتى

_____.rar

قام بنشر

الأستاذ خالد نور

جزاك الله كل خير أخي الكريم وأشكرك على الشرح

لكن كان لي طلب وهو أريد معرفة الخطأ الذي ارتكبته في ملفي المرفق السابق لكي أتجنبه علماً أنني مشيت بالخطوات التي شرحها الأستاذ هادي

مشكوري ومأجورين بإذن الله

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه



×
×
  • اضف...

Important Information