TOP

VBA-الدرس 11.1. أحداث المصنف (أحداث Workbook)

YouLibreCalc for Excel logo

يمكن أن يكون لدينا أحداث المصنف (مثل الفتح والإغلاق وما إلى ذلك) التي يمكن أن تكون مشغلات (رموز تبديل) لكود VBA.


Workbook_Open (فتح الكتاب)

لاتباع الإرشادات عند فتح المصنف ، انتقل إلى ThisWorkbook وحدد Workbook:

ستتم إضافة الحدث Workbook_Open افتراضيًا وسيتم تنشيطه عند فتح المصنف:

Private Sub Workbook_Open()

End Sub

على سبيل المثال ، إذا أضفنا التعليمات التالية ، فسيتم عرض مربع الحوار عند فتح المصنف:

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (حدث قبل إغلاق المصنف)

لتنفيذ الإرشادات قبل إغلاق المصنف ، حدد قبل الإغلاق:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

يمكن إلغاء إغلاق المصنف عن طريق تعيين المتغير "Cancel" إلى True.

فيما يلي مثال يُطلب فيه من المستخدم التأكيد لإغلاق المصنف:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'إذا استجاب المستخدم بـ NO ، فسيكون للمتغير Cancel القيمة TRUE (والتي ستلغي إغلاق المصنف)
     If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (حدث قبل حفظ المصنف)

يقع هذا الحدث مباشرة قبل حفظ المصنف:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

يمكن إلغاء حفظ الملف عن طريق ضبط المتغير "Cancel" على True.

Workbook_BeforePrint (حدث قبل طباعة الكتاب)

يقع هذا الحدث قبل طباعة المصنف:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

يمكن إلغاء طباعة الملف عن طريق ضبط المتغير "Cancel" على True.

Workbook_AfterSave (حدث بعد حفظ المصنف)

يقع هذا الحدث مباشرة بعد حفظ المصنف:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (حدث تبديل ورقة العمل)

يقع هذا الحدث في كل مرة تقوم فيها بالتبديل بين أوراق العمل في مصنف:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

في هذا المثال ، يتم عرض اسم الورقة النشطة في مربع الحوار:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick (انقر نقرًا مزدوجًا فوق حدث في خلية)

يحدث هذا الحدث عندما يتم النقر نقرًا مزدوجًا فوق خلية ورقة عمل:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

على سبيل المثال ، يمكننا استخدام هذا الحدث لإضافة لون تعبئة خلية ، اعتمادًا على الورقة المحددة:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) 'لون برتقالي
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'اللون الاخضر
     End If
End Sub

Workbook_SheetBeforeRightClick (الحدث قبل النقر بزر الماوس الأيمن)

يقع هذا الحدث قبل النقر بزر الماوس الأيمن على نفسه:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (حدث تغيير محتوى الورقة)

يقع هذا الحدث عندما يتغير محتوى ورقة العمل:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (حدث SheetCalculate)

يحدث هذا الحدث عندما يتم حساب البيانات الموجودة في ورقة العمل أو إعادة حسابها:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (حدث تغيير نطاق الخلايا المحدد)

يقع هذا الحدث عندما يتغير محتوى النطاق المحدد من الخلايا في جدول البيانات:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

في هذا المثال ، يتغير لون التعبئة إذا كانت الخلية A1 فارغة:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Range("A1") = "" Then
         Target.Interior.Color = RGB(124, 255, 255) 'اللون الأزرق
    End If
End Sub

Workbook_NewSheet (إضافة حدث ورقة جديدة)

يقع هذا الحدث عند إضافة ورقة جديدة إلى المصنف:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (ارتباط النقر فوق الحدث)

يحدث هذا الحدث عند النقر فوق ارتباط (نص تشعبي):

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub