Msgbox bir uyarı, yönlendirme kutucuğudur. Üzerine yazılabilen mesajlar doğrultusunda kullanıcıyı işlemler sırasında ikaz etmek yahut yönlendirmek amacı ile kullanılabilir. Herhangi bir hata üretildiğinde kullanıcıyı hata konusunda uyarabilirsiniz. Koşulun durumuna bağlı olarak kullanıcıyı yeni yapılacak işlemler doğrultusunda seçenekler sunarak yönlendirebilirsiniz.
MsgBox Nesnesine ExcelVBA.Net ile Genel Bir Bakış
MsgBox VBA nesnesidir.
Kod blokları içerisinde :
VBA.Interaction.Msgbox ("1 - Verilecek mesaj", 2 - MsgBox Üzerinde Görüntülenmek İstenen Mesaj Kutusu Stilleri , "3 - Mesaj Kutusu Başlığı" , 4 - Yardım Dosyası, 5 - Yardım Dosya id numarası) şeklinde yapılanmıştır.
VBA uygulamalarında biz onu çoğunlukla ve kısaca ;
MsgBox "Mesajımız", Mesaj Kutusu Stili , "Mesaj Başlığımız" şeklinde kullanırız.
Şimdi açılımlarını inceleyelim.
1 - Yazılmak istenen mesaj:
Bu kısma kullanıcıyı yönlendirecek ya da uyaracak bir mesaj yazılabilir. Kullanıcı bu
mesaja göre ne yapacağını anlar. Opsiyonel değildir, MsgBox ifadesinden sonra kesinlikle bu birincil alana mesaj yazılmalıdır. Mesaj verilmek istenmiyorsa Msgbox "" ya da MsgBox empty ile mesajsız bir kutu gelmesi sağlanabilir. Ancak MsgBox kutusunun görüntülenmesinin bir esprisi kalmaz. Belki sadece mesaj kutusuna başlık ile ikaz etmek isteyen kullanıcılar olabilir, onların düşüncelerine yararlı olabilir. Fakat pek tasvif etmediğimiz bir durumdur. Yine de tercihe dayalıdır.
2 - Mesaj kutusu stilleri:
Kullanıcıyı mesajımız ile uyardığımızda ona seçenekler sunmamızı, ya da mesaj ile verilmek istenen ikaz türünün önem derecesini belli etmek için mesaj kutusunu şekillendirmemizi sağlar. Opsiyoneldir.
► vbAbortRetryIgnore
Mesaj kutusu üzerinde Durdur , Yeniden Dene , Yoksay gibi üç buton çıkmasını sağlarız.
► vbCritical
Mesaj kutusu üzerinde varsayılan bir Tamam butonu ile yanında ikaz durumunun kritikliğini ifade edebilmek için kırmızı bir çarpı işareti görünmesini sağlarız. En çok kullanılanlardan biridir.
► vbExclamation
Mesaj kutusu üzerinde varsayılan bir Tamam butonu ile sarı bir üçgen - trafik işaretine benzer- icon ile ünlem işaret çıkmasını sağlarız. En çok kullanılanlardan biridir.
► vbInformation
Mesaj kutusu üzerinden varsayılan bir Tamam butonu ile bir İ harf iconu ( information ) çıkmasını yani kullanıcıya oluşan durumun normal olduğunu, işlemin başarı ile geliştiğini iletmeyi sağlayabiliriz. En çok kullanılanlardan biridir.
► vbMsgBoxRight
Mesaj kutusu üzerindeki mesajımızı sağa dayalı olarak gösterilmesini sağlarız.
► vbMsgBoxRtlReading
Mesaj kutusunun üzerindeki kapat işaretinin ters tarafta( solda) çıkmasını sağlar. Görünen yüzü standart bir mesaj kutusunun dışında daha içe basık farklı bir biçimdedir.
► vbMsgBoxHelpButton
Mesaj kutusu üzerinde Tamam ve Yardım adlarında iki buton görünmesini sağlarız.
► vbOKCancel
Mesaj kutusu üzerinde Tamam ve İptal adlarında iki buton görünmesini sağlarız.
► vbOKOnly
Mesaj kutusu üzerinde varsayılan bir Tamam tuşu görüntülemeyi sağlar. Bu ifade kullanılmadığında da mesaj kutusunun varsayılanı olarak bu tip otomatik kullanılır.
► vbQuestion
mesaj kutusu üzerinden varsayılan bir Tamam tuşu çıkar ve yanında bir soru işareti iconu görüntülemeyi sağlarız. En çok kullanılanlardan biridir.
► vbRetryCancel
Mesaj kutusu üzerinde Yeniden Dene ve İptal adlarında iki buton görüntülemeyi sağlarız.
► vbSystemModal
Mesaj kutusu başlık satırını standart bir VB form nesnesine benzetmek için kullanılır. İstenirse mesaj kutusu başlık çubuğuna icon adapte edilebilir.
► vbYesNo
Mesaj kutusu üzerinde Evet ve Hayır adlarında iki buton görüntülemeyi sağlarız. En çok kullanılanlardan biridir.
► vbYesNoCancel
Mesaj kutusu üzerinde Evet Hayıt ve İptal adlarına üç buton görüntülememizi sağlar.
3 - Mesaj Kutusu Başlığı
Kullanıcıya gönderilen mesaj kutusunun başlık satırına konu ile alakalı bir başlık yazmamıza olanak veren bölüm özelliği. Opsiyoneldir.
4 - 5 Yardım Dosyası ve İçerik İd Nosu
Bu iki özellik bir arada kullanılması gerektiğinden tek başlıkta yazıyorum. Mesaj kutusu üzerinde görüntülenebilecek bir Yardım butonu ile bu özellikler kullanılabilir.
Oluşan bir hata karşısında kullanıcıya geniş kapsamlı bir yardım dosyası sunmak isteyenler için güzel bir özelliktir.
Aşağıdaki şekilde kullanılması için tanımlanabilir :
Kod: Tümünü seç
MsgBox "İşleminiz tamamlanamadı", vbMsgBoxHelpButton, "Uyarı !", "winhlp32.hlp",0
- Mesaj kutusu içerisinde İşleminiz tamamlanamadı şeklinde bir uyarı mesajı yazacak.
- Görüntülenecek buton iki adet biri Tamam biri Yardım olacak.
- Kullanıcı yardım almak ister ise, winhlp32 yardım dosyasının 0 nolu indexi açılacak. İndex ile ilgili ayrıntıyı burada vermeyeceğiz. İndex içeriği yardım dosyası hazırlama aşamasında belirlenen bir id no ile olur.
Buralara kadar izahatlarımızı teorik olarak anlayabildiyseniz, şimdi biraz pratik yapalım. Verdiğimiz örneklere uygun bir kaç kod örneği ile işlemler yapalım.
Kod: Tümünü seç
Sub Mesaj()
MsgBox "Excel Versiyonunuz : " & Application.Version, vbInformation, "Bilgi"
End Sub
Kod: Tümünü seç
Sub mesaj1()
ver = Application.Version
MsgBox "Versiyonunuz numaranız : " & ver, vbInformation, "Bilgi Mesajıdır"
End Sub
2007 ise işlemi yapmaya izinli olalım, değilse olmayalım.
Kod: Tümünü seç
Sub mesaj2()
ver = Application.Version
If ver = "11.0" Then
MsgBox "Bu işlem için versiyonunuz uygun değil", vbCritical, "Uyarı"
Else
MsgBox "İşlemi yapabilirsiniz.", vbInformation, "Bilgilendirme"
End If
End Sub
VBA uygulamalarında çokça kullanılır. Lüfen iyi analiz ediniz.
Şimdi versiyonumuzun Excel 2007 olması durumunda gelişecek olayları belirleyelim
+ birleşimi ile birden fazla mesaj kutusu tipi tanımlayabiliyoruz.
Kod: Tümünü seç
Sub mesaj3()
'**********************************
'******** www.ExcelVBA.Net ********
'******** Tarkan VURAL ********
'******** 17-11-2008 ********
'**********************************
ver = Application.Version
If ver = "11.0" Then
If MsgBox("Versiyon uygun değil, yine de devam edilsin mi?", vbQuestion + vbYesNo) = vbYes Then
'devam eden işlemlerinize uygun kodlamalar, biz mesaj verdirelim , anlaşılır olsun
MsgBox "devam edildi"
Else
'vbno seçildiyse( hayır seçildiyse )
Exit Sub
End If
End If
End Sub
Alt satıra geçmek için bir çok karakter ve komut kullanabiliriz.
vbnewline , vbcr , vbcrlf, chr(13), chr(10)
+ birleşimi ile bilgi mesaj iconuna ilave içe basık mesaj kutusu modeli tipi de ekledik.
Kod: Tümünü seç
Sub mesaj4()
MsgBox "Mesajımızın ilk satırı" & vbNewLine & _
"Mesajımızın ikinci satırı" & vbCr & _
"Mesajımızın üçüncü satırı" & vbCrLf & _
"Mesajımızın dördüncü satırı" & Chr(13) & _
"Mesajımızın beşinci satırı" & Chr(10), vbInformation + vbMsgBoxRtlReading, "Satır satır mesaj yazdıralım"
End Sub
Üç butonlu bir modelde ( Evet, Hayır ve İptal ) her butonun görevlerini ayrı ayrı belirleyebiliriz.
Öncelikle değişken belirleyelim ve değişkenlerimizin tiplerini tanımlayalım
Kod: Tümünü seç
Sub mesaj5()
'**********************************
'******** www.ExcelVBA.Net ********
'******** Tarkan VURAL ********
'******** 17-11-2008 ********
'**********************************
Dim Mesaj As String
Dim Stil As VbMsgBoxStyle
Dim Baslik As String
Dim Cevap As VbMsgBoxResult
Dim yardim As String
'yardım dosyası için internetteki bir adrese de başvuru yaptırabiliriz
yardim = "http://www.excelvba.net"
'yardım butonu da ekleyelim, tam olsun :))
Stil = vbYesNoCancel + vbInformation + vbMsgBoxHelpButton
Baslik = "Bu mesajın başlık kısmıdır"
Mesaj = "Ne yazacağımı açıkçası bulamadım"
Mesaj = Mesaj & vbCr & "Bu şekilde idare edersiniz artık"
Mesaj = Mesaj & vbCr & vbCr & vbCr & "Evet : İdare edebiliriz "
Mesaj = Mesaj & vbCr & "Hayır : İdare edemeyiz "
Mesaj = Mesaj & vbCr & "İptal : Karar veremedim, sen en iyisi bu mesajı kapat" & vbCr & vbCr
Cevap = MsgBox(Mesaj, Stil, Baslik, yardim, 0)
' bunu if cevap = vbYes then gibi sorgulamalarla da yapabiliriz, ben case yolunu örnekliyorum
Select Case Cevap
Case Is = vbYes
'evet seçilmesi durumunda çalışacak kodlarınızı bu alana yazabilirsiniz.
MsgBox "evet seçimi yapıldı"
Case Is = vbNo
'hayır seçilmesi durumunda çalışacak kodlarınızı bu alana yazabilirsiniz.
MsgBox "hayır seçimi yapıldı"
Case Is = vbCancel
'iptal seçilmesi durumunda , yada mesaj kutusu çarpıdan kapatıldğı durumda
'çalışacak kodlarınızı bu alana yazabilirsiniz.
MsgBox "iptal seçimi yapıldı"
End Select
End Sub
Kod: Tümünü seç
Sub mesaj6()
'**********************************
'******** www.ExcelVBA.Net ********
'******** Tarkan VURAL ********
'******** 17-11-2008 ********
'**********************************
i = 1: a = 1
10 i = InputBox("Lütfen şifreyi giriniz", "Şifre Girişi")
If i <> 1 Then
If a <> 3 Then
MsgBox "Hatalı giriş" & vbNewLine & "Lütfen şifrenizi giriniz", vbCritical, "Tanımsız Kullanıcı"
a = a + 1
GoTo 10
Else
MsgBox "3 kez şifre giriş denemesi başarısız olmuştur." & vbCr & _
"Bu programı kullanma yetkiniz yoktur.", vbExclamation, "Program Kapatılacak"
'3 kez hatalı şifre girişinde programınızdan çıkılmasını sağlayabilirsiniz
'yanlış olma durumunda istediğiniz kodlamayı buraya yazabilirsiniz.
End
End If
Else
MsgBox "Şifreyi doğru girdiniz, şimdi programınız açılacaktır." _
, vbInformation, "Başarılı Giriş Gerçekleşti"
'doğru girişte, devam eden işlemleriniz için gerekli kodlamayı buraya yazabilirsiniz.
End If
End Sub