تُستخدم مربعات الحوار (مربعات Dialog) في Excel VBA لعرض المعلومات للمستخدم.
تعرض الوظيفة MsgBox رسالة في مربع حوار ، وتنتظر حتى يقوم المستخدم بالنقر فوق الزر ، وتعيد عددًا صحيحًا يشير إلى الزر الذي نقر المستخدم عليه.
مربع الحوار الأكثر شيوعًا هو مربع الرسائل ، ولكن يمكننا أيضًا استخدام مربع الإدخال.
حتى الآن ، استخدمنا مربع الحوار MsgBox لعرض المعلومات على الشاشة.
Sub delete_B2() Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" '"تم حذف محتويات الخلية B2!" End Sub
في هذه الحالة ، يتم استدعاء MsgBox مع وسيطة واحدة فقط. يرى الرمز أدناه:
سنقوم الآن بإنشاء مربع حوار سيطلب تأكيد الحذف قبل تنفيذ التعليمات. ثم هناك ثلاث حجج سنستخدمها:
MsgBox([TEXT] ، [BUTTONS] ، [TITLE])
Sub delete_B2() If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes Then Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" End If End Sub
نتيجة:
Private Sub warning(var_text As String) MsgBox "Caution : " & var_text & " !" End Sub Sub macro_test() If Range("A1") = "" Then warning "empty cell" '"خلية فارغة" ElseIf Not IsNumeric(Range("A1")) Then warning "non-numerical value" '"قيمة غير رقمية" End If End Sub
يحدد vbYesNo أن أزرار الحوار هي "Yes" و "No" ، ويمثل vbYes الزر "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'إذا تم الضغط على الزر Yesbl_ ...
ثابت | قيمة عددية | وصف |
---|---|---|
vbOKOnly | 0 | |
vbOKCancel | 1 | |
vbAbortRetryIgnore | 2 | |
vbYesNoCancel | 3 | |
vbYesNo | 4 | |
vbRetryCancel | 5 |
vbCritical | 16 | |
vbQuestion | 32 | |
vbExclamation | 48 | |
vbInformation | 64 |
فيما يلي مثال MsgBox سيستمر عرضه في كل مرة في الحلقة حتى يضغط المستخدم على Yes:
Sub humor() Do If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then Exit Do '=> Response Yes = نعم ، نخرج من الحلقة End If Loop While 1 = 1 '=> حلقة لا نهاية لها MsgBox ";-)" End Sub
لعرض شريط جديد ، يمكنك استخدام الدالة Chr مع الوسيطة 10 المسؤولة عن تحريك الشريط ، على سبيل المثال:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
نحصل على النتيجة التالية:
يطالب InputBox المستخدم بإدخال قيمة في مربع حوار ، على سبيل المثال:
Sub example() Dim result As String result = InputBox("Text ?", "Title") 'يتم تعيين القيمة المدخلة في InputBox إلى المتغير If result <> "" Then 'إذا كانت القيمة أي شيء وليس "" ، فسيتم عرض النتيجة MsgBox result End If End Sub
نحصل على النتيجة التالية:
يمكن استخدام الوسيطة الثالثة لتعيين القيمة الافتراضية:
InputBox("Text ?", "Title", "Default value")
والنتيجة هي على النحو التالي: