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

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

قام بنشر

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

اخي @AMIRBM  

1) الأفضل هو تجاهل الصفوف الفارغة في عمود G بدلا من تقييد العرض بـ  51 صف فقط

لأنك بذلك تمنع عرض أي بيانات جديدة تضاف لاحقا بعد الصف 51 أي إدخال جديد لن يظهر في الـ ListBox الكود يصبح محدودا وغير ديناميكي

2) بعد معاينة الملف لاحظت انك اسم الجدول على ورقة العمل باسم Tableau5 بينما الكود يشير إلى Tableau1 وهذا سيؤدي حتما إلى ظهور خطأ عند التشغيل لأن الكود يبحث عن جدول غير موجود

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

3) إذا كنت متأكد أن تقييد العرض على 51 صف فقط هو المطلوب ويراعي ظروف عملك يمكننا تعديل الكود ليقوم بعرض أول 51 صف من البيانات الفعلية فقط

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

هل ترغب أن أعدل لك الكود بحيث يعرض فقط أول 51 صف غير فارغ في العمود G ؟
أو تفضل التعديل الديناميكي الذي يعرض كل الصفوف الفعلية ويتجاهل الفراغات ؟

  • Like 1
قام بنشر

شكرا أستاذ بارك الله فيك وجزاك الله خيرا

أرغب أن تعدل لك الكود بحيث يعرض فقط أول 51 صف غير فارغ في العمود G

قام بنشر

ادن يمكننا استخدام الطريقة التالية 

Screenshot05-24-202500_32_52.png.8cf8a652c07ff4594d0a088c014169a9.png

Private Sub UserForm_Initialize()
    Dim i As Long, j As Long, d As Object
    colVisu = ColArr(1, 7)
    Dim maxRow As Long: maxRow = 52   ' 51 + 1  حدد هنا الحد الأقصى للصفوف الظاهرة مع مراعات صف العناوين
    Dim lastRow As Long: lastRow = WS.Cells(WS.Rows.Count, 7).End(xlUp).Row
    If lastRow > maxRow Then lastRow = maxRow
    Set WsRng = WS.Range("A2:G" & lastRow)
    TblBD = WsRng.Value
    OnRng = WsRng.Rows.Count
    ReDim cnt(1 To OnRng, 1 To UBound(colVisu) + 1)

    For i = 1 To OnRng
        For j = 0 To UBound(colVisu)
            cnt(i, j + 1) = TblBD(i, colVisu(j))
            If IsDate(cnt(i, j + 1)) Then cnt(i, j + 1) = Format(cnt(i, j + 1), "dd/mm/yy")
        Next j
    Next i

    With Me.ListBox1
        .ColumnCount = UBound(colVisu) + 1
        .ColumnWidths = "90;90;90;90;120;90;90"
        .List = cnt
    End With

    Me.ComboBox1.List = Application.Transpose(WS.Range("A1:G1").Value)
    Me.ComboBox1.ListIndex = 0
    Me.B.Caption = "فلترة ب: " & Me.ComboBox1
    Me.A.Caption = "إختيار عمود البحث"

    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(cnt): d(cnt(i, 1)) = "": Next i
    Me.ComboBox2.List = d.Keys: Me.ComboBox2 = "*"

    EnteteListBox
    UpLabels
    Hrlabel
    Me.tCount.Caption = "عدد الموظفين / " & ListBox1.ListCount
End Sub

 

منظومة-الشؤون-الادارية 2.xlsm

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