JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

-->
الصفحة الرئيسية

ميكروسوفت اوفيس اكسل | فورم بحث فى جميع اعمدة وبيانات الجدول من خلال تيكست بوكس واحد Excel VBA Searchable UserForm All Data

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

اهلا بكم متابعى موقع عالم الاوفيس

درس جديد من دروس اكسيل 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

لتحميل ملف العمل



الاسمبريد إلكترونيرسالة