تُستخدم مربعات الحوار (مربعات 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")
والنتيجة هي على النحو التالي: