أساسيات VBA إكسل : حدث المصنف - الأحداث في VBA الجزء الأول
الأحداث أو بالفرنسية LES ÉVÉNEMENTS
في هذه التدوينة من سلسلة أساسيات VBA إكسل سنتكلم على الأحداث أو بالفرنسية LES ÉVÉNEMENTS.
الأحداث هي الاجراءات التي يقوم بها المستخدمون لتسهيل الامور الذين يرغبون في عملها, كما يمكننا عمل انهاء الصفحة بسرعة كبيرة.
هناك نوعان من الأحداث في VBA إكسل :
بالنسبة لهذه التدوينة سنتكلم فيها عن حدث المصنف أما بالنسبة لورقة العمل سنتكلم عنها في تدوينة أخرى.
WORKBOOK_OPEN عند الفتح
لتنفيذ التعليمات عند فتح المصنف وذالك بعد القيام بتنشيط وحدات الماكرو، نننتقل إلى ThisWorkbook نختار دفتر العمل :
الحدث مصنف_مفتوح تمت إضافته افتراضيًا ، وهو
يعمل عند فتح المصنف:
Private Sub Workbook_Open() End Sub
و عند إضافة العبارة التالية ، سيتم عرض مربع
حوار عند فتح المصنف:
Private Sub Workbook_Open() MsgBox "Message de bienvenue" End Sub
WORKBOOK_BEFORECLOSE قبل الإغلاق
لتنفيذ التعليمات قبل إغلاق المصنف مباشرة ، اختر قبل
الإغلاق :
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
يمكننا التراجع عن إغلاق المصنف عبر تعيين القيمة True عامل Cancel
في المثال التالي حيث يجب على المستخدم التأكيد لإغلاق المصنف:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Si l'utilisateur répond Non, la variable Cancel vaudra True (ce qui annulera la fermeture) If MsgBox("Etes-vous certain de vouloir fermer ce classeur ?", 36, "Confirmation") = vbNo Then Cancel = True End If End Sub
WORKBOOK_BEFORESAVE قبل الحفظ
يتم تشغيل هذا الحدث قبل التسجيل مباشرة:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
يمكن إلغاء التسجيل عن طريق تخصيص القيمة True عامل Cancel.
WORKBOOK_AFTERSAVE بعد التسجيل
يتم تشغيل هذا الحدث بعد التسجيل:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
WORKBOOK_BEFOREPRINTقبل الطباعة
يتم تشغيل هذا الحدث قبل الطباعة مباشرة:
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
يمكن إلغاء الطباعة عن طريق تعيين القيمة True عامل Cancel
WORKBOOK_SHEETACTIVATE عند تنشيط ورقة
يتم تشغيل هذا الحدث في كل مرة يتم
فيها تغيير الورقة:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub
على سبيل المثال ، عرض اسم الورقة
في مربع حوار:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Nom de la feuille : " & 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 = "Feuil1" Then
Target.Interior.Color = RGB(255, 108, 0) 'Couleur orange
Else
Target.Interior.Color = RGB(136, 255, 0) 'Couleur verte
End If
End Sub
يمكن إلغاء النقر المزدوج عن طريق
تعيين القيمة True عامل Cancel
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_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) 'Bleu clair
End If
End Sub
WORKBOOK_NEWSHEET عند إدراج ورقة
يتم تشغيل هذا الحدث في كل مرة يتم
فيها إدراج ورقة جديدة:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
End Sub