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

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

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

تحميل مجانى يورزفورم الاتوماتيكى لفتح اى عدد من اوراق العمل بسرعة فائقةExcel UserForm VBA

 

تحميل مجانى يورزفورم الاتوماتيكى لفتح اى عدد من اوراق العمل بسرعة فائقةExcel UserForm VBA

 


في عالم تحليل البيانات وإعداد التقارير باستخدام إكسل، يعد التنقل الفعال بين أوراق العمل (Sheets) عنصراً حاسماً لتحسين الإنتاجية. في هذا المقال، سنستعرض كيفية إنشاء فورم (UserForm) متكامل يحتوي على أزرار لجميع شيتات الملف، مع خاصية التحديث التلقائي عند إضافة شيتات جديدة.

 

 لماذا نحتاج لهذا الحل؟

1. توفير الوقت: التنقل السريع بين عشرات الشيتات بدون الحاجة للبحث

2. التنظيم: عرض جميع الشيتات في مكان واحد بطريقة مرتبة

3. التكيف التلقائي: تحديث الفورم تلقائياً عند إضافة/حذف شيتات

4. سهولة الاستخدام: واجهة بديهية للمستخدمين غير التقنيين

 

 المكونات الرئيسية للحل

 

 1. الفورم الرئيسي (frmSheetNavigator)

' الكود الكامل للفورم

Dim colButtons As Collection

 

Private Sub UserForm_Initialize()

    Set colButtons = New Collection

    CreateButtons

End Sub

 

Private Sub CreateButtons()

    ' مسح الأزرار السابقة والمعالجات

    ClearAllButtons

   

    ' إنشاء أزرار جديدة

    Dim ws As Worksheet

    Dim topPos As Integer: topPos = 10

    Dim btn As MSForms.CommandButton

    Dim btnHandler As clsSheetButton

    Dim btnIndex As Integer: btnIndex = 1

   

    For Each ws In ThisWorkbook.Worksheets

        Set btn = Me.Controls.Add("Forms.CommandButton.1", "btnSheet" & btnIndex)

        With btn

            .Caption = ws.Name

            .Top = topPos

            .Left = 10

            .Width = 120

            .Height = 25

            .Tag = ws.Name

        End With

       

        Set btnHandler = New clsSheetButton

        Set btnHandler.Button = btn

        btnHandler.SheetName = ws.Name

        colButtons.Add btnHandler

       

        topPos = topPos + 30

        btnIndex = btnIndex + 1

    Next ws

   

    ' ضبط حجم الفورم

    Me.Height = topPos + 50

    Me.Width = 150

End Sub

 

Private Sub ClearAllButtons()

    ' مسح جميع عناصر التحكم من النوع CommandButton

    Dim i As Integer

    For i = Me.Controls.Count - 1 To 0 Step -1

        If TypeName(Me.Controls(i)) = "CommandButton" Then

            Me.Controls.Remove Me.Controls(i).Name

        End If

    Next i

   

    ' مسح Collection المعالجات

    If Not colButtons Is Nothing Then

        Set colButtons = Nothing

    End If

End Sub

 

Public Sub RefreshForm()

    CreateButtons

End Sub

 

 2. معالج الأزرار (clsSheetButton)

 

   Public WithEvents Button As MSForms.CommandButton

Public SheetName As String

 

Private Sub Button_Click()

    On Error GoTo ErrorHandler

    ThisWorkbook.Worksheets(SheetName).Activate

    Exit Sub

   

ErrorHandler:

    MsgBox "حدث خطأ في فتح الشيت: " & SheetName & vbCrLf & _

           "الخطأ: " & Err.Description, vbCritical

End Sub    

 

`

 

 3. أحداث المصنف (ThisWorkbook)

   Private Sub Workbook_NewSheet(ByVal Sh As Object)

    ScheduleFormUpdate

End Sub

 

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    ScheduleFormUpdate

End Sub

 

Sub ScheduleFormUpdate()

    Application.OnTime Now + TimeValue("00:00:01"), "UpdateSheetNavigator"

End Sub   

 

 كيفية التطبيق خطوة بخطوة

 

 الخطوة 1: إعداد بيئة العمل

 

1. افتح محرر VBA بـ `Alt+F11`

2. أنشئ UserForm جديداً وأسمه `frmSheetNavigator`

3. أضف Class Module وأسمه `clsSheetButton`

 

 الخطوة 2: تنفيذ الكود

 

1. الصق الأكواد في أماكنها الصحيحة

2. أضف Module عادي لأكواد التشغيل:

 

 

    Sub ShowNavigator()

    frmSheetNavigator.Show

End Sub

 

Sub UpdateSheetNavigator()

    On Error Resume Next

    If Not frmSheetNavigator Is Nothing Then

        If frmSheetNavigator.Visible Then

            frmSheetNavigator.RefreshForm

        End If

    End If

End Sub   

 

 الخطوة 3: الاختبار

 

1. شغل الماكرو `ShowNavigator`

2. جرب إضافة شيت جديد أثناء تشغيل الفورم

3. تأكد من ظهور الزر الجديد خلال ثانية واحدة

 

 حل المشكلات الشائعة


 1. مشكلة التحديث التلقائي

 

الحل: تأكد من:

- وجود الكود في `ThisWorkbook`

- عدم وجود أخطاء في `ScheduleFormUpdate`

- أن الفورم مرئي عند التحدي

وفى النهاية

هذا الحل المتكامل يوفر:

1. واجهة مستخدم احترافية للتنقل بين الشيتات

2. نظام تحديث تلقائي ذكي

3. مرونة عالية للتخصيص

4. إمكانية التوسع لمزيد من الميزات

يمكنك تطوير هذا الحل بإضافة:

- أيقونات مميزة لكل زر

- إمكانية إعادة تسمية الشيتات من الفورم

- عرض معاينة سريعة لمحتوى كل شيت

- تكامل مع أدوات أخرى في إكسل

باستخدام هذه التقنية، ستوفر ساعات من العمل وتقدم حلاً احترافياً يسهل إدارته ويتكيف تلقائياً مع تطور ملفات إكسل الخاصة بك.

لتحميل الفورم جاهز من هنا

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