Bu dosya, bir UserForm üzerindeki ComboBox ve ListBox nesnelerinde listenin fare tekerleği (scroll wheel) ile aşağı yukarı kaydırılmasını sağlayan bir VBA örneğidir. Varsayılan durumda bu nesnelerde listeyi kaydırmak için sağdaki kaydırma çubuğuna tıklamak gerekir; örnekte fare imleci nesnenin üzerine geldiğinde tekerlek hareketi listeye aktarılır. Çözüm, user32 kütüphanesindeki Windows API fonksiyonlarına dayanır.
Dosyanın içeriği
- Sayfa1: A1:A16 aralığında liste verisi bulunur. myList adlı tanımlı ad, Sayfa1!$A$2:$A$21 aralığını gösterir.
- ufScrollWheelAndHover: cmbMyList adlı ComboBox ve lbxMyList adlı ListBox içeren UserForm.
- Module1: Formu açan openform prosedürünü içerir.
- ScrollWheel: Fare kancasını kuran ve kaldıran API kodlarının bulunduğu modül.
Makrolar
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.- openform: ufScrollWheelAndHover formunu açar. Dosyayı başlatan makro budur.
- HookListBoxScroll: Formu ve kaydırılacak nesneyi parametre olarak alır, fare tekerleği olaylarını yakalayan kancayı kurar. Kod, 32 ve 64 bit Office sürümleri için ayrı API tanımları içerir.
- UnhookListBoxScroll: Kurulan kancayı kaldırır.
- MouseProc: Kanca tarafından çağrılan fare olayı işleyicisidir; tekerlek hareketini ilgili ComboBox veya ListBox nesnesine iletir.
- Formdaki cmbMyList_MouseMove ve lbxMyList_MouseMove olayları, fare nesnenin üzerine geldiğinde HookListBoxScroll prosedürünü çağırır. UserForm_QueryClose olayı form kapanırken UnhookListBoxScroll ile kancayı kaldırır.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- Alt+F8 ile openform makrosunu çalıştırın.
- Açılan formda fare imlecini ComboBox veya ListBox üzerine getirin.
- Fare tekerleğini çevirerek listeyi aşağı yukarı kaydırın.
- Kendi projenize uyarlamak için ScrollWheel modülünü ekleyin, formunuzdaki nesnelerin MouseMove olaylarında HookListBoxScroll, QueryClose olayında UnhookListBoxScroll prosedürünü çağırın.