Listbox ve ComboBox da maus tekeri kullanmak

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Arkadaşlar merhaba, 2 hafta öncesine kadar yardımlarınız ile hazırladığım depo stok dosyası çok güzel çalışıyordu fakat önceki versiyonu 32 bit olan PC mi değiştirdim ve yeni 64 bit PC ile birlikte 64 bit Office programı kullanmaktayım ama 32 bit te çalışan hazırladığımız dosya 64 bit te sürekli hata veriyor. Dosyada modüle2 de eklenen maus ile listbox ve ComboBox'da maus tekeri ile kaydırma kodları ver ama dosya açıldığında hemen formda Ana_Sayfa formu açılıyor ve oradaki listbox üzerine maus geldiği an hata veriyor. Konuyla ilgili 4 gündür araştırmadığım konu kalmadı. Bir yeri düzeltiyorum diğer yerden hata veriyor. Ekte eklemiş olduğum dosyayı 64 bit ile çalışan arkadaşlardan yardımcı olursa çok memnun olurum. İlgilenen tüm arkadaşlarımıza şimdiden çok teşekkür ederim.
 

Ekli dosyalar

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Arkadaşlar merhaba, dosyada ilk hata veren kısım modül2 de bulunan aşağıdaki kısımda. 64 bit ile alakalımı acaba.


Kod:
Sub HookListBoxScroll(frm As Object, ctl As MSForms.Control)
    Dim lngAppInst As Long
    Dim hwndUnderCursor As Long
    Dim tPT As POINTAPI
    GetCursorPos tPT
    hwndUnderCursor = WindowFromPoint(tPT.X, tPT.Y)
    If Not frm.ActiveControl Is ctl Then
            ctl.SetFocus
    End If
    If mListBoxHwnd <> hwndUnderCursor Then
            UnhookListBoxScroll
            Set mCtl = ctl
            mListBoxHwnd = hwndUnderCursor
            lngAppInst = GetWindowLong(mListBoxHwnd, GWL_HINSTANCE)
            If Not mbHook Then
                    mLngMouseHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, lngAppInst, 0)
                    mbHook = mLngMouseHook <> 0
            End If
    End If
End Sub
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,356
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Win32 API Declarations ve varsa kullandığı değişkenlerin 64 bit'e göre uygun olarak yeniden yazılması gerekiyor. Zor bir iş değil ancak kendi adıma bununla şimdi ilgilenemeyeceğim.

.
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
578
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Bir başka sayfada konuyla ilgili bir kod buldum ve tam istediğim gibi oldu.

Konuyla ilgili sorun yaşayan arkadaşlara yardımcı olması için aşağıda paylaştım.

Listbox ve ComboBox da maus tekerinin çalıştırılması için,
Modül içerindeki kod hem 32 bit hem de 64bit için yazılmış, aynı zamanda hem Listbox hem de ComboBox için geçerli

Modül içerisindeki kod çok uzun olduğu için mesaj kısmına ekleyemedim. Ekte ki metin belgesinde modül kodu bulunmakta.

UserForm içerisine


Kod:
Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    UnhookListBoxScroll
    HookListBoxScroll Me, Me.ComboBox2
End Sub

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    UnhookListBoxScroll
    HookListBoxScroll Me, Me.ListBox1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    UnhookListBoxScroll
End Sub
 

Ekli dosyalar

Üst