Bu dosya, MsgBox penceresinde varsayılan olarak gelen düğme adlarını (Yes, No, Cancel, OK, Retry, Abort, Ignore) kendi belirlediğiniz metinlerle değiştirmek için hazırlanmış bir makro örneğidir. Düğme yazıları, pencere başlığı ve mesaj metni tek bir fonksiyon çağrısıyla belirlenir.
Dosyanın içeriği
- exceldestek.com | exceldepo.com: A1:D11 aralığında yer alan karşılama sayfasıdır. Formül içermez.
- Module1: Yaklaşık 140 satırlık VBA modülüdür. İçinde Test, MessageBoxH, MsgBoxHookProc ve BBmsgbox yordamları bulunur.
Makrolar
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir. Makrolar user32 ve kernel32 kütüphanelerindeki Windows API fonksiyonlarını kullanır. Dosya silme ya da dışarıya bağlantı gibi işlemler yapılmaz.- Test: Örnek çağrıdır. Evet/Hayır/İptal düğmeli bir pencereyi "exceldestek", "exceldepo" ve "yok daha neler" düğme yazılarıyla açar, ardından basılan düğmenin metnini ikinci bir MsgBox ile gösterir.
- BBmsgbox: Ana fonksiyondur. Pencere tanıtıcısı, düğme stili (vbYesNoCancel, vbOKCancel vb.), başlık, mesaj, isteğe bağlı simge ve en fazla üç düğme metnini parametre olarak alır. Geri dönüş değeri, basılan düğmenin metnidir.
- MessageBoxH: Pencere açılmadan önce bir WH_CBT kancası (hook) kurar ve Windows MessageBox fonksiyonunu çağırır.
- MsgBoxHookProc: Pencere etkinleşirken başlığı, mesaj metnini ve seçilen stile uygun düğmelerin yazılarını değiştirir, ardından kancayı kaldırır.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- Alt+F11 ile VBA düzenleyicisini açıp Module1 modülüne gidin.
- Test yordamını F5 ile çalıştırarak örneği görün.
- Kendi çalışmanızda BBmsgbox fonksiyonunu aynı parametre sırasıyla çağırın; düğme metinlerini ButA, ButB ve ButC alanlarına yazın.
- Dönen metne göre kodunuzu yönlendirin; örneğin dönen değer ButA ile aynıysa birinci düğmeye basılmıştır.