TOP

VBA-Ders 10. İletişim kutuları (İletişim kutuları)

Excel VBA içindeki iletişim kutuları (İletişim Kutuları), kullanıcıya bilgi görüntülemek için kullanılır.

MsgBox işlevi bir iletişim kutusunda bir mesaj görüntüler ve kullanıcının bir düğmeyi tıklatmasını bekler, ardından kullanıcının hangi düğmeyi tıklattığını belirten bir tam sayı döndürür.

En yaygın iletişim kutusu Mesaj Kutusu'dur, ancak Giriş Kutusunu da kullanabiliriz.


MsgBox

Şu ana kadar bilgileri ekranda görüntülemek için MsgBox iletişim kutusunu kullandık.

Sub delete_B2()
    Range("B2").ClearContents
    MsgBox "The contents of B2 have been deleted !"  '"B2 hücresinin içeriği silindi!"
End Sub

Bu durumda MsgBox yalnızca bir argümanla çağrılır. Görmek aşağıdaki kod:

Şimdi iki talimat yürütülmeden önce silme işleminin onaylanmasını isteyecek bir iletişim kutusu oluşturacağız. O zaman kullanacağımız üç argüman var:

MsgBox([TEXT], [BUTTONS], [TITLE])
  • TEXT: iletişim kutusu metni
  • BUTTONS: düğmelerin seçimi (evet, hayır, iptal vb.) + diğer seçenekler
  • TITLE: iletişim kutusu başlığı
  • 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
    

    Sonuç:

    Private Sub warning(var_text As String)
        MsgBox "Caution : " & var_text & " !"
    End Sub
    
    Sub macro_test()
        If Range("A1") = "" Then
            warning "empty cell"           '"boş hücre"
        ElseIf Not IsNumeric(Range("A1")) Then
            warning "non-numerical value"  '"sayısal olmayan değer"
        End If
    End Sub
    

    vbYesNo, iletişim düğmelerinin "Yes" ve "No" olduğunu belirtir ve vbYes, "Yes" düğmesini temsil eder:

    If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Yes düğmesine basılırsa...
    

    MsgBox'da ikinci argümanı kullanma seçenekleri

    Devamlı Sayısal değer Tanım
    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'da ikinci argümanı kullanma örneği

    Burada, kullanıcı Yes tuşuna basana kadar döngüde her seferinde görüntülenmeye devam edecek bir MsgBox örneği verilmiştir:

    Sub humor()
        Do
            If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
                Exit Do '=> Response Yes = Evet, döngüden çıkıyoruz
            End If
        Loop While 1 = 1 '=> Sonsuz döngü
        MsgBox ";-)"
    End Sub
    

    Yeni bir şerit görüntülemek için şeridin taşınmasından sorumlu olan Chr işlevini 10 numaralı bağımsız değişkenle kullanabilirsiniz, örneğin:

    MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
    

    Aşağıdaki sonucu elde ederiz:

    Giriş Kutusu

    Bir Giriş Kutusu, kullanıcıdan bir iletişim kutusuna bir değer girmesini ister; örneğin:

    Sub example()
        Dim result As String
       
        result = InputBox("Text ?", "Title") 'Değişkene Giriş Kutusu'na girilen değer atanır.
       
        If result <> "" Then 'Değer "" dışında herhangi bir şeyse sonuç görüntülenecektir
           MsgBox result
        End If
    End Sub
    

    Aşağıdaki sonucu elde ederiz:

    Üçüncü argüman varsayılan değeri ayarlamak için kullanılabilir:

    InputBox("Text ?", "Title", "Default value")
    

    Sonuç aşağıdaki gibidir: