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

طلب شرح كود جلب البيانات من جدول إلى فورم والتعديل عليها


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

السلام عليكم

إستعملت خاصية البحث في المنتدى للحصول على موضوع حويل البيانات من جدول إلى فورم والتعديل عليها

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

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

إستراد بيانات من جدول إلى فورم.rar

رابط هذا التعليق
شارك

أستاذي يحياوي

الملف يعمل جيد نعم المشكل ليس في الملف

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

أي كيف أختار الخلايا المعنية لإضهارها في الفورم وكيف أختار الخلية المسؤولة على البحث وهكذا أي ما هو الجزؤ المعني على ذلك في الكود

رابط هذا التعليق
شارك

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

\'إستراد بيانات من جدول إلى فورم_3.rar

رابط هذا التعليق
شارك

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

اخي طاهر سنبداء معاً شرح الكود جزء جزء

وسننتقل من الجزء الى الاخر بعد فهم الجزء الاول

إتفقنا

الجزء الاول


Private Sub ComboBox1_Change()

  Application.ScreenUpdating = False

   Sheets("Sheet1").Select

	For i = 2 To Sheets("Sheet1").ER

		 If ComboBox1.Text <> Sheets("Sheet1").Cells(i, "A").Text Then

			TextBox2.Text = ""

			TextBox3.Text = ""

			TextBox4.Text = ""

		  Else

			TextBox2.Text = Sheets("Sheet1").Cells(i, "B").Text

			TextBox3.Text = Sheets("Sheet1").Cells(i, "C").Text

			TextBox4.Text = Sheets("Sheet1").Cells(i, "D").Text

			Sheets("Sheet1").Select

			Sheets("Sheet1").Cells(i, "A").Select

		 Exit For

	End If

	Next

  Application.ScreenUpdating = True

End Sub

أولاً هذا بخصوص التغير في ال ComboBox1

Private Sub ComboBox1_Change()

2. لمنع اهتزاز الشاشة

  Application.ScreenUpdating = False

3. إختيار ورقة العمل وهنا اسمها Sheet1

Sheets("Sheet1").Select

4. المتغير (وهنا يتم اعتماد تغير الصفوف ) ويبتدي من 2 وينتهي ب ER وER معرف لعد الصفوف المستخدمة في العمود A وستجده في كود Sheet1

For i = 2 To Sheets("Sheet1").ER

5. الشرط ويعني اذا كانت قيمة ComboBox1 لا تساوي اي قيمة في صفوف العمود A

If ComboBox1.Text <> Sheets("Sheet1").Cells(i, "A").Text Then

وينقسم الى حالتين أ. إذا تحقق الشرط يقوم بمسح القيم من TextBox3 و TextBox4

TextBox2.Text = ""

			TextBox3.Text = ""

			TextBox4.Text = ""

ب. إذا لم يتحقق الشرط

Else

ينفذ التالي

TextBox2.Text = Sheets("Sheet1").Cells(i, "B").Text

			TextBox3.Text = Sheets("Sheet1").Cells(i, "C").Text

			TextBox4.Text = Sheets("Sheet1").Cells(i, "D").Text

			Sheets("Sheet1").Select

			Sheets("Sheet1").Cells(i, "A").Select

قيمة TextBox2 تساوي قيمة الخلية الموجوة في العمود B والصف (i) المتغير وهكذا بالنسبة TextBox3 والعمود C و TextBox4 و العمود D ثم إخيار ورقة العمل Sheet1 ثم اختيار الخلية (i, "A") 6. الخروج من For وانهاء الشرط وإعادة اهتزاز الشاشة

Exit For

    End If

    Next

  Application.ScreenUpdating = True

End Sub

بإنتظار ردك على الشرح

ابواحمد

  • Like 2
رابط هذا التعليق
شارك

الاخ / الاستاذ يحيــــــــــــــــاوي

الاخ / الاستاذ " ابو احمد " عبد الله المجرب

تسلم الايادي .... وجزاكم الله كل الخير

ابو احمد : الشرح رائـــــــــــــــــــــــــــــــع

وفقكم الله

ابو الحارث

رابط هذا التعليق
شارك

الشرح واضح 100 ب100 نشكرك جزيل الشكر

إلا في الجزء---- ثم إخيار ورقة العمل Sheet1 ثم اختيار الخلية (i, "A")----- ماذا تقصد بحرف i وهل كل مرة تختار الحرف i

وواصل الشرح على بركة الله

رابط هذا التعليق
شارك

اخي الحبيب ابو احمد

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

ولو انني انا يمكن اول واحد حملت المرفق ليلة امس

وفكرت اكثر من نصف ساعه عن كيفية توصيل المعلومه للسائل

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

عن الاكواد وكيف سأوصلها له . فتوقفت لارى ردود الاعضاء لعلي افهم غرض السائل بالضبط

ولكن جاء حبيبنا اخي ابو احمد وماقصر وقام بالواجب وزياده

==================================================================

اما بالنسبه لاستفسار اخي طاهر عن ما يلي:

الشرح واضح 100 ب100 نشكرك جزيل الشكر

إلا في الجزء---- ثم إخيار ورقة العمل Sheet1 ثم اختيار الخلية (i, "A")----- ماذا تقصد بحرف i وهل كل مرة تختار الحرف

كما قال اخي ابو احمد حرف i هو اسم متغير اخترناه ليقوم بالوظيفه التاليه:

For i = 2 To Sheets("Sheet1").ER

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

For taher = 2 To Sheets("Sheet1").ER

اذا هنا خلصنا من مفهوم الحرف الذي يشغلك

اما بالنسبه للرقم 2 فهنا يعني اننا سنبدأ في البحث من السطر الثاني

يعني لو حطيت رقم 3 ممكن هذا ولكن سيتجاهل البحث من السطر الثاني وسيبدأ من السطر الثالث وهكذا .........

وهنا ايضا خلصنا من الرقم 2

Sheets("Sheet1")

طبعا هنا السطر موضح نفسه بنفسه

.ER

اما ER هنا فهنا عرفها صاحب الكود بما هو موجود في حدث SHEET1

ER = Range("A1").CurrentRegion.Rows.Count

وهي مسؤوله عن عدد الصفوف من A1 الى A2 والى A3 وهكذا ...........

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

 For i = 2 To Sheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
وسيعمل معك بنفس المبدأ وبالرجوع الى سؤالك اخي طاهر سترى انه لو حذفت هذا السطر
Sheets("Sheet1").Cells(i, "A").Select

سيعمل الكود معك بالشكل الطبيعي دون اخطاء ولكن بشرط مهم

ان تكتفي فقط بعملية البحث دون اجراء اي تعديل

لان الكود في حال بقاؤه سيحدد الخليه التي بحثت عنها ومنها سيأتي تنفيذ كود التعديل

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

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

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

الجزء الثاني


Private Sub CommandButton2_Click()

    Application.ScreenUpdating = False

On Error Resume Next

If ComboBox1 = "" Then

MsgBox "YOU HAVE TO CHOSE ITEME CODE FROM LIST FIRST", vbExclamation, "WRONG STEP"

ComboBox1.DropDown

ElseIf TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then

MsgBox "YOU SHOULD FILL ALL FIELDS", vbExclamation, "EMPTY FIELDS"

Else

Beep

If MsgBox("YOU ASKED TO MODIFY :" & vbNewLine & "" & vbNewLine & "CODE : " & ComboBox1 _

& vbNewLine & "" & vbNewLine & "NAME : " & TextBox2 & vbNewLine & "" & vbNewLine & "PRICE : " & TextBox3 & vbNewLine & "" & vbNewLine & "QU : " & TextBox4 & vbNewLine & "" _

& vbNewLine & "YOU WANT TO CONTINUE ?", vbYesNo + vbQuestion, "ENTRY CONFIRMATION") = vbYes Then


  Sheets("Sheet1").Select

    ActiveCell.Offset(0, 1).Value = TextBox2.Text

    ActiveCell.Offset(0, 2).Value = TextBox3.Text

    ActiveCell.Offset(0, 3).Value = TextBox4.Text

Me.TextBox2.Text = ""

Me.TextBox3.Text = ""

Me.TextBox4.Text = ""

Me.ComboBox1.Text = ""

Me.Hide

MsgBox "DATA HAS BEEN MODIFIED SUCCESSFULLY", vbInformation, "DONE"

End If

End If

   Application.ScreenUpdating = True

End Sub

1. حدث الضغط على الزر وايقاف اهتزاز الشاشة والانتقال الى التالي عند الخطاء

Private Sub CommandButton2_Click()

    Application.ScreenUpdating = False

On Error Resume Next

2. شرط خلو ComboBox1 من البيانات (تظهر رسالة ) ويتم انزال القائمة المنسدلة

If ComboBox1 = "" Then

MsgBox "YOU HAVE TO CHOSE ITEME CODE FROM LIST FIRST", vbExclamation, "WRONG STEP"

ComboBox1.DropDown

3. تنبيه خلو التيكست بوكس من القيم تظهر رسالة تنبيه

ElseIf TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Then

MsgBox "YOU SHOULD FILL ALL FIELDS", vbExclamation, "EMPTY FIELDS"

4. في حالة عدم تحقق شرط خلو من البيانات تظهر رسالة من عدة أسطر وفيها خيار YES & NO

Else

Beep

If MsgBox("YOU ASKED TO MODIFY :" & vbNewLine & "" & vbNewLine & "CODE : " & ComboBox1 _

& vbNewLine & "" & vbNewLine & "NAME : " & TextBox2 & vbNewLine & "" & vbNewLine & "PRICE : " & TextBox3 & vbNewLine & "" & vbNewLine & "QU : " & TextBox4 & vbNewLine & "" _

& vbNewLine & "YOU WANT TO CONTINUE ?", vbYesNo + vbQuestion, "ENTRY CONFIRMATION") = vbYes Then

5. عند إختيار YES وضع قيمة TextBox2 في نفس صف الخلية النشطة والعمود الاول بعدها و قيمة TextBox3 في نفس صف الخلية النشطة والعمود الثاني بعدها و قيمة TextBox4 في نفس صف الخلية النشطة والعمود الثالت بعدها

Sheets("Sheet1").Select

    ActiveCell.Offset(0, 1).Value = TextBox2.Text

    ActiveCell.Offset(0, 2).Value = TextBox3.Text

    ActiveCell.Offset(0, 3).Value = TextBox4.Text

ثم مسح قيم الموحودة في مربعات النص

Me.TextBox2.Text = ""

Me.TextBox3.Text = ""

Me.TextBox4.Text = ""

Me.ComboBox1.Text = ""

وإخفاء الفورم وظهور رسالة تنبيهية بإتمام التعديل

Me.Hide

MsgBox "DATA HAS BEEN MODIFIED SUCCESSFULLY", vbInformation, "DONE"

ان شاء الله اكون وفقت في الشرح

ابواحمد

  • Like 1
رابط هذا التعليق
شارك

الاعزاء :

الاستاذ " ابو عبد الله " احمـــــــــــــد حمور

الاستاذ " ابو احمد " عبد الله المجــــــــــــــرب

كل الشكر ..... رائع رائع

وفقكم الله

ابو الحارث

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
×
×
  • اضف...

Important Information