Bu eğitim, kullanıcılara mesaj kutularını görüntülemek için VBA MsgBox İşlevinin nasıl kullanılacağını ele alacaktır (Evet Hayır Mesaj Kutusu dahil). Giriş Kutuları hakkındaki makalemiz de ilginizi çekebilir.
VBA MsgBox İşlevi
VBA'da basit bir MsgBox görüntülemek kolaydır:
1 | MsgBox "Bu Bir Mesaj Kutusudur" |
Ancak basit bir OK mesaj kutusu görüntülemekten çok daha fazlasını yapabilirsiniz. Ayrıntılara girmeden önce hızlıca karmaşık örneğe bakalım…
VBA EvetHayır Mesaj Kutusu
Aşağıda bir mesaj kutusu oluşturacağız:
- “Mesaj Kutusu Başlığı” başlığı ve “Metin” istemi
- Bir soru işareti simgesi
- Basit bir “Tamam” yerine Evet / Hayır seçenekleri
- Varsayılan düğme = 'Hayır'
123 | Dim cevap Tamsayı olarakcevap = MsgBox("Metin", vbQuestion + vbYesNo + vbDefaultButton2, "Mesaj Kutusu Başlığı") |
Mesaj kutusu, kullanıcının seçimine bağlı olarak vbYes veya vbNo döndürür. Ardından, seçime göre farklı eylemler gerçekleştirebilirsiniz:
12345 | Cevap = vbYes iseMsgBox "Evet"BaşkaMsgBox "Hayır"Bitir |
Bir sonraki bölümde, mesaj kutuları oluştururken kullanabileceğiniz tüm seçenekleri size göstereceğiz. Daha sonra size MsgBox Fonksiyonunun sözdizimini tanıtacağız ve son olarak diğer mesaj kutusu örneklerini gözden geçireceğiz.
VBA Mesaj Kutusu Seçenekleri
Aşağıdaki resme bir göz atın. Burada (neredeyse) mesaj kutuları oluştururken kullanabileceğiniz tüm seçenekleri göreceksiniz. Simgelere ve farklı düğmelere dikkat edin.
Bu, Premium VBA Eklentimizden “MessageBox Builder”ın ekran görüntüsü: AutoMacro. MessageBox Builder, istediğiniz mesaj kutusunu hızlı bir şekilde tasarlamanıza ve kodu kod modülünüze eklemenize olanak tanır. Ayrıca birçok başka kod oluşturucu, kapsamlı bir VBA kod kitaplığı ve çeşitli kodlama araçları içerir. Herhangi bir VBA geliştiricisi için sahip olunması gereken bir şeydir.
MsgBox İşlevinin Sözdizimi
MsgBox( komut istemi [, düğmeler ] [, başlık ] [, yardım dosyası, bağlam ] )
istemi (Gerekli) - Bu, birincil mesaj kutusu metnidir.
düğmeler - Hangi düğmelerin görüntüleneceğini seçin. Atlanırsa, 'Yalnızca Tamam'. Burada ayrıca hangi simgenin gösterileceğini ve varsayılan düğmeyi belirleyebilirsiniz.
Başlık - Mesaj kutusunun üst kısmındaki başlık. Atlanırsa, mevcut uygulamanın adı görüntülenir (örn. Microsoft Excel).
yardım dosyası - Kullanıcı 'Yardım' düğmesine tıkladığında erişilebilecek yardım dosyasını belirtin. Belirtilmişse, bağlam da eklemelisiniz (aşağıda)
bağlam - Uygun Yardım konusuna atanan Yardım bağlam numarasını temsil eden sayısal ifade.
Muhtemelen yardım dosyasını ve bağlam argümanlarını görmezden gelebilirsiniz. Hiç kullandıklarını görmedim.
Mesaj Kutusu Başlığını ve İstemini Özelleştirin
MsgBox işlevi, başlığı özelleştirmenize ve aşağıdaki gibi mesajlar istemenize olanak tanır:
1 | Msgbox "Sor", "Başlık" |
Başka bir örnek:
123 | Alt MsgBoxPromptTitle()MsgBox "1. Adım Tamamlandı. 2. adımı çalıştırmak için Tamam'a tıklayın.", "Adım 1/5"Alt Bitiş |
Önemli! Metninizi alıntılarla çevrelemeyi unutmamalısınız.
MessageBox Satır Kesmeleri
Ayrıca 'vbNewLine' ile mesaj kutusu istemlerinize satır sonları ekleyebilirsiniz.
123 | Alt MsgBoxPromptTitle_NewLine()MsgBox "1. Adım Tamamlandı." & vbNewLine & "2. Adımı Çalıştırmak için Tamam'a tıklayın.", , "Adım 1/5"Alt Bitiş |
Metni birleştirmek için & sembolünü kullandığımıza dikkat edin. Metin birleştirmeyle ilgili makalemizde metinle & metinle ve satır sonu eklemek için diğer seçenekler hakkında daha fazla bilgi edinebilirsiniz.
Mesaj Kutusu Simgeleri
VBA, mesaj kutularınıza önceden oluşturulmuş dört simgeden birini ekleme olanağı sağlar:
Simge Sabiti | Simge |
---|---|
vbInformation | ![]() |
vbKritik | ![]() |
vbQuestion | ![]() |
vbExclamation | ![]() |
Simge sabiti, düğme bağımsız değişkenine yerleştirilmelidir:
123 | Alt MsgBoxQuestionIcon()MsgBox "Soru Örneği", vbQuestionAlt Bitiş |
Bu, Soru simgesiyle varsayılan 'Tamam' mesaj kutusunu oluşturacaktır:
Yazdığınızda, VBA Düzenleyicisinin size sunulan seçenekleri nasıl göstereceğine dikkat edin:
Bu yararlıdır çünkü simgelerin veya düğmelerin tam sözdizimini veya adlarını hatırlamanız gerekmez.
Şimdi her bir mesaj kutusu simgesinin demosunu yapacağız:
MsgBox Simgeleri - Bilgi
123 | Alt MsgBoxInformationIcon()MsgBox "Bilgi Örneği", vbInformationAlt Bitiş |
MsgBox Simgeleri - Kritik
123 | Alt MsgBoxCriticalIcon()MsgBox "Kritik Örnek", vbCriticalAlt Bitiş |
MsgBox Simgeleri - Soru
123 | Alt MsgBoxQuestionIcon()MsgBox "Soru Örneği", vbQuestionAlt Bitiş |
MsgBox Simgeleri - Ünlem
123 | Alt MsgBoxExclamationIcon()MsgBox "Ünlem Örneği", vbExclamationAlt Bitiş |
Aşağıda farklı buton düzenleriyle mesaj kutuları oluşturma hakkında konuşacağız. Farklı bir mesaj kutusu türü seçerseniz, "+" kullanarak düğmelerden sonra simge türünü eklemeniz gerekir:
123 | Alt MsgBoxQuestionIcon()MsgBox "Devam etmek istiyor musunuz?", vbOKCancel + vbQuestionAlt Bitiş |
MsgBox Değişkenleri
Şimdiye kadar öncelikle varsayılan 'Tamam' mesaj kutusuyla çalıştık. Tamam mesaj kutusunun yalnızca bir seçeneği vardır: 'Tamam'a basmak kodun devam etmesine izin verir. Ancak diğer düğme gruplarını da belirleyebilirsiniz: Tamam / İptal, Evet / Hayır, vb.
Bu durumda hangi düğmeye basıldığına bağlı olarak farklı işlemler yapmak isteyeceksiniz. Bir örneğe bakalım.
İşte oluşturacağımız mesaj kutusu:
Bu, kodun tamamıdır (sıradan onu parçalayacağız):
123456789101112 | Alt MsgBoxVariable()Dim cevap Tamsayı olarakcevap = MsgBox("Devam etmek istiyor musunuz?", vbQuestion + vbYesNo)Cevap = vbYes iseMsgBox "Evet"BaşkaMsgBox "Hayır"BitirAlt Bitiş |
İlk önce mesaj kutusu çıktısını bir tamsayı değişkenine atadık.
123 | Dim cevap Tamsayı olarakcevap = MsgBox("Devam etmek istiyor musunuz?", vbQuestion + vbYesNo) |
Ardından, hangi düğmeye basıldığına bağlı olarak ne yapacağımızı belirlemek için If-Else kullanırız:
12345 | Cevap = vbYes iseMsgBox "Evet"BaşkaMsgBox "Hayır"Bitir |
MsgBox işlevi bir tamsayı değeri (1-7 arasında) döndürür, bu nedenle değişkeni bir tamsayı türü olarak tanımlarız. Ancak, tamsayıya başvurmak yerine bir sabite başvurabilirsiniz (ör. vbOK, vbCancel, vb.). Tüm seçenekleri görmek için bu tabloya bakın:
Buton | Devamlı | Değer |
---|---|---|
Tamam | vbOK | 1 |
İptal | vbİptal | 2 |
iptal | vbAbort | 3 |
yeniden dene | vbRetry | 4 |
Görmezden gelmek | vbIgnore | 5 |
Evet | vbYes | 6 |
Numara | vbNo | 7 |
Şimdi her bir düğme gruplandırmasını göstereceğiz:
Tamam Mesaj Kutusu - vbOKOnly
Bu standart VBA mesaj kutusudur.
123456 | Alt MsgBox_OKOnly()Dim cevap Tamsayı olarakcevap = MsgBox("OKOnly Örnek", vbOKOnly)Alt Bitiş |
Tamam İptal Mesaj Kutusu - vbOKCancel
123456789101112 | Alt MsgBox_OKİptal()Dim cevap Tamsayı olarakcevap = MsgBox("Tamam İptal Örneği", vbOKCancel)Cevap = vbOK iseMsgBox "Tamam"BaşkaMsgBox "İptal"BitirAlt Bitiş |
Evet Hayır Mesaj Kutusu - vbYesNo
123456789101112 | Alt MsgBox_YesNo()Dim cevap Tamsayı olarakcevap = MsgBox("Evet Hayır Örnek", vbYesNo)Cevap = vbYes iseMsgBox "Evet"BaşkaMsgBox "Hayır"BitirAlt Bitiş |
Evet Hayır İptal Mesaj Kutusu - vbYesNoCancel
1234567891011121314 | Alt MsgBox_YesNoCancel()Dim cevap Tamsayı olarakcevap = MsgBox("Evet Hayır İptal Örneği", vbYesNoCancel)Cevap = vbYes iseMsgBox "Evet"ElseIf cevap = vbNo SonraMsgBox "Hayır"BaşkaMsgBox "İptal"BitirAlt Bitiş |
Durdur Yeniden Dene İleti Kutusunu Yoksay - vbAbortRetryIgnore
1234567891011121314 | Alt MsgBox_AbortRetryIgnore()Dim cevap Tamsayı olarakanswer = MsgBox("Yeniden Denemeyi Yoksay Örneği İptal Et", vbAbortRetryIgnore)Eğer cevap = vbAbort iseMsgBox "İptal"ElseIf cevap = vbRetry O zamanMsgBox "Yeniden Dene"BaşkaMsgBox "Yoksay"BitirAlt Bitiş |
Yeniden Dene İptal İleti Kutusu - vbRetryCancel
123456789101112 | Alt MsgBox_RetryCancel()Dim cevap Tamsayı olarakanswer = MsgBox("Örneği Yeniden Dene İptal Et", vbRetryCancel)Cevap = vbRetry iseMsgBox "Yeniden Dene"BaşkaMsgBox "İptal"BitirAlt Bitiş |
VBA MessageBox Örnekleri
Makroyu Çalıştırmadan Önce Mesaj Kutusu Onayı
Bu kod, bir makro çağırmadan önce bir Evet Hayır Mesajı kutusu görüntüler. Evet tıklanırsa makro çağrılır, Hayır tıklanırsa Makro çalışmaz.
12345678 | Alt Msgbox_BeforeRunning()Dim cevap Tamsayı olarakcevap = MsgBox("Makro1'i çalıştırmak istiyor musunuz?", vbQuestion + vbYesNo)Cevap = vbYes ise Macro1'i ArayınAlt Bitiş |
Evet / Hayır Mesaj Kutusu - Alttan Çık
Burada, bir makroyu çalıştırmaya devam edip etmeyeceğini kullanıcıyla onaylayacağız. Hayır tıklanırsa kod alttan çıkar, aksi takdirde işlem devam eder.
12345678910 | Alt Msgbox_BeforeRunning()Dim cevap Tamsayı olarakcevap = MsgBox("Devam etmek istiyor musunuz?", vbQuestion + vbYesNo)Cevap = vbNo ise Sub'dan Çıkın'Bazı KodlarAlt Bitiş |
Access VBA'da VBA İleti Kutusu
Yukarıdaki örneklerin tümü, Access VBA'da Excel VBA'dakiyle tamamen aynı şekilde çalışır.