TOP

VBA-Lesson 10. نوافذ الحوار (Dialog boxes)

تُستخدم مربعات الحوار (مربعات Dialog) في Excel VBA لعرض المعلومات للمستخدم.

تعرض الوظيفة MsgBox رسالة في مربع حوار ، وتنتظر حتى يقوم المستخدم بالنقر فوق الزر ، وتعيد عددًا صحيحًا يشير إلى الزر الذي نقر المستخدم عليه.

مربع الحوار الأكثر شيوعًا هو مربع الرسائل ، ولكن يمكننا أيضًا استخدام مربع الإدخال.


MsgBox

حتى الآن ، استخدمنا مربع الحوار MsgBox لعرض المعلومات على الشاشة.

Sub delete_B2()
    Range("B2").ClearContents
    MsgBox "The contents of B2 have been deleted !"  '"تم حذف محتويات الخلية B2!"
End Sub

في هذه الحالة ، يتم استدعاء MsgBox مع وسيطة واحدة فقط. يرى الرمز أدناه:

سنقوم الآن بإنشاء مربع حوار سيطلب تأكيد الحذف قبل تنفيذ التعليمات. ثم هناك ثلاث حجج سنستخدمها:

MsgBox([TEXT] ، [BUTTONS] ، [TITLE])
  • النص: نص مربع الحوار
  • 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_ ...
    

    خيارات استخدام الوسيطة الثانية في MsgBox

    ثابت قيمة عددية وصف
    vbOKOnly0ok - dialog boxes
    vbOKCancel1ok - dialog boxescancel - dialog boxes
    vbAbortRetryIgnore2abort - dialog boxesretry - dialog boxesignore - dialog boxes
    vbYesNoCancel3yes - dialog boxesno - dialog boxescancel - dialog boxes
    vbYesNo4yes - dialog boxesno - dialog boxes
    vbRetryCancel5retry - dialog boxescancel - dialog boxes
    vbCritical16critical - dialog boxes
    vbQuestion32question - dialog boxes
    vbExclamation48exclamation - dialog boxes
    vbInformation64information - dialog boxes

    مثال على استخدام الوسيطة الثانية في MsgBox

    فيما يلي مثال 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")
    

    والنتيجة هي على النحو التالي: