Bu dosya, Windows API fonksiyonlarıyla oluşturulan bir InputBox benzeri pencereye açılan liste (ComboBox) eklemeyi gösterir. Kullanıcıdan metin yazması yerine hazır seçeneklerden birini seçmesi istendiğinde, UserForm hazırlamadan bu pencere kullanılabilir.
Önemli: API bildirimleri 32 bit Office sürümleri için hazırlanmıştır. 64 bit sürümlerde hata verebilir; bu sürümlerde bildirimlerin PtrSafe ve LongPtr ile uyarlanması gerekir.
Dosyanın içeriği
- Sayfa1: Boş çalışma sayfasıdır, veri ve formül içermez. Makro kodu bu sayfanın kod bölümünde yer alır.
- Module1: Pencereyi oluşturan API bildirimleri, veri yapıları ve yordamlar bulunur.
Makrolar
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.- ComboBoxInputBox (Sayfa1): Dört elemanlı bir dizi hazırlar (ExcelDepo, ExcelDestek, ExcelDosyaları, KolayExcel). Ardından CreateComboBoxInputBox yordamını pencere başlığı, açıklama metni ve bu dizi ile çağırır. Örnek makro bu yordamın nasıl kullanılacağını gösterir.
- CreateComboBoxInputBox (Module1): Pencere ve açılan listeyi oluşturan ana yordamdır.
- Main, RegisterWindowClass, CreateWindows: Pencere sınıfını kaydeder, pencereyi, açılan listeyi ve düğmeleri oluşturur.
- WndProc, OKButtonProc, CancelButtonProc, ComboBoxProc, HelpButtonProc: Pencere iletilerini ve düğme ile liste olaylarını karşılar (Tamam, İptal, Yardım ve liste seçimi).
- GetAddress ve exitprocedure: Yordam adresini alma ve pencereyi kapatma işlerini yürütür.
Önemli: API bildirimleri 32 bit Office sürümleri için hazırlanmıştır. 64 bit sürümlerde hata verebilir; bu sürümlerde bildirimlerin PtrSafe ve LongPtr ile uyarlanması gerekir.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- Alt+F11 ile VBA düzenleyicisini açın.
- Sayfa1 içindeki ComboBoxInputBox makrosunu F5 ile veya Alt+F8 penceresinden çalıştırın.
- Açılan pencerede listeden bir seçenek belirleyip onaylayın.
- Kendi listenizi kullanmak için makrodaki dizinin elemanlarını, başlık ve açıklama metnini değiştirin.
- Başka bir çalışma kitabında kullanmak için Module1 modülünü o kitaba aktarın ve CreateComboBoxInputBox yordamını aynı biçimde çağırın.