بسم الله الرحمن الرحيم
اهلا بكم متابعى موقع عالم الاوفيس
درس جديد من دروس اكسيل Excel VBA
فورم بحث فى جميع اعمدة وبيانات الجدول من خلال تيكست بوكس واحد Excel VBA Searchable UserForm All Data
هل جربت فى يوم من الايام انك تعمل فورم للبحث عن البيانات فى جدول معين سواء كانت هذة البيانات
- بيانات نصية
- ارقام
- تاريخ
من خلال تكست بوكس واحد TextBox
طبعا نقدر نعمل الكلام دة ولكن فى بعض القيم لا تستجيب لعملية البحث مثل التاريخ او الارقام
وهذا ماجعلنا نقوم بعمل هذا الدرس التعليمى Excel VBA Searchable UserForm All Data لنقوم بشرح كل هذة الخطوات
خطوة خطوة من الصفر حتى الاحتراف
ف البداية نقوم بعمل يوزرفورم UserForm
ثم نقوم بادراج تكست بوكس Textbox
ليست بوكس Listbox
ونقوم بفتح حدث الكود للتكست بوكس Private Sub TextBox1_AfterUpdate
ثم نقوم بعمل كود لجلب رؤس اعمدة الجدول الى الليست بوكس
With
Me.ListBox1
.Clear
For colhead = 1 To 6
.AddItem
.List(0, colhead - 1) = Sheet1.Cells(1,
colhead).Value
Next
colhead
وبعد ذلك نقوم بعمل عدة متغيرات منهم
- ListRow
- findval
- lastrow
- findrow
- listcol
كل هذة المتغيرات سنقوم باستخدامهما داخل الكود
نعين قيمة ListRow=1
نختار قيمة findval معيار البحث من خلال قيمة التكست بوكس
findval
= "*" & Me.TextBox1 & "*"
ونكتب كود البحث كالاتى
ListRow
= 1
If IsDate(Me.TextBox1) Then
findval = CDate(Me.TextBox1.Value)
ElseIf IsNumeric(Me.TextBox1) Then findval = Val(Me.TextBox1)
Else
findval
= "*" & Me.TextBox1 & "*"
End
If
lastrow
= Sheet1.Range("a" & Rows.Count).End(xlUp).Row
For i = 2 To lastrow
findrow =
Application.WorksheetFunction.CountIf(Sheet1.Rows(i).EntireRow, findval)
If findrow > 0 Then
For listcol = 1 To 6
.AddItem
.List(ListRow, listcol - 1) =
Sheet1.Cells(i, listcol).Value
Next listcol
ListRow = ListRow + 1
End If
Next i
End With