Tomás Vasques, Mauro e equipe,
Sou novo por aqui (mas não como leitor/pesquisador), e gostaria de agradecer pelas inúmeras lições que aprendi apenas acompanhando os posts de vcs. Realmente é de grande ajuda para quem, assim como eu, não tem chance de fazer um curso com todo o apoio necessário. Obrigado mesmo!
Porém, o que me motivou a entrar de fato no fórum foi este tópico em especial, pois é o primeiro que tenho a sensação de que se eu for tentar entender tudo por conta própria assim como venho fazendo e quase sempre funcionando, irei levar pelo menos 1 ano, pois pelo q entendo o código estende-se para VBA+API. E de vba já não entendo muito, imagina API. Essa integração parece ser bastante interessante, mas o que eu precisava (e acredito não ser um problema para quem entende do assunto) é simplesmente fazer com que o scroll do mouse funcione não só apenas com a listbox e combobox no userform, mas sim num combobox que está dentro de uma multipage que por sua vez está no userform.
Estou tentando entender o pq do código apenas funcionar em combos que estão no userform e não nos que estão dentro de uma multipage. Isso seria possivel? como seria?
Muito obrigado a toda equipe e a todos os amigos do fórum! Abraços
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Scroll Mouse em ListBox
-
- Acabou de chegar
- Mensagens: 1
- Registrado em: Seg Out 17, 2016 1:38 pm
Re: Scroll Mouse em ListBox
Boa tarde, achei esse link e baixei o arquivo que foi anexado, consegui adaptar de boa para a minha macro, porém não está funcionando no Win 64 bits, eu adaptei os seguintes codigos para executar em 64 bits:
Option Explicit
#If Win64 Then
Private Declare PTRSAFE Function SetWindowLong Lib "user32.dll" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare PTRSAFE Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare PTRSAFE Function CallWindowProc Lib "user32.dll" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal Wparam As Long, _
ByVal Lparam As Long) As Long
#Else
Private Declare Function SetWindowLong Lib "user32.dll" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function CallWindowProc Lib "user32.dll" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal Wparam As Long, _
ByVal Lparam As Long) As Long
#End If
ai esse codigo funcionou de boa, o que da problema é esse:
Sub UserFormHook(Formulario As UserForm, formCaption As String)
Dim LocalHwnd As Long, LocalPrevWndProc As Long
Dim i As Integer, Erros As Integer
LocalHwnd = FindWindow("ThunderDFrame", formCaption)
LocalPrevWndProc = SetWindowLong(LocalHwnd, GWL_WNDPROC, AddressOf WindowProc)
On Error GoTo DupChave
OutraVez:
colForm.Add Formulario, CStr(LocalHwnd)
colPrevHdl.Add LocalPrevWndProc, CStr(LocalHwnd)
colFormHdl.Add LocalHwnd
Exit Sub
DupChave:
If Erros = 0 Then
For i = 1 To colFormHdl.Count
If colFormHdl(i) = LocalHwnd Then
colFormHdl.Remove i
colForm.Remove i
colPrevHdl.Remove i
End If
Next
Erros = 1
Resume OutraVez
End If
End Sub
que está marcado, da a mensagem de tipos incompativeis.
Podem me ajudar ?
Option Explicit
#If Win64 Then
Private Declare PTRSAFE Function SetWindowLong Lib "user32.dll" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare PTRSAFE Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare PTRSAFE Function CallWindowProc Lib "user32.dll" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal Wparam As Long, _
ByVal Lparam As Long) As Long
#Else
Private Declare Function SetWindowLong Lib "user32.dll" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function CallWindowProc Lib "user32.dll" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal Wparam As Long, _
ByVal Lparam As Long) As Long
#End If
ai esse codigo funcionou de boa, o que da problema é esse:
Sub UserFormHook(Formulario As UserForm, formCaption As String)
Dim LocalHwnd As Long, LocalPrevWndProc As Long
Dim i As Integer, Erros As Integer
LocalHwnd = FindWindow("ThunderDFrame", formCaption)
LocalPrevWndProc = SetWindowLong(LocalHwnd, GWL_WNDPROC, AddressOf WindowProc)
On Error GoTo DupChave
OutraVez:
colForm.Add Formulario, CStr(LocalHwnd)
colPrevHdl.Add LocalPrevWndProc, CStr(LocalHwnd)
colFormHdl.Add LocalHwnd
Exit Sub
DupChave:
If Erros = 0 Then
For i = 1 To colFormHdl.Count
If colFormHdl(i) = LocalHwnd Then
colFormHdl.Remove i
colForm.Remove i
colPrevHdl.Remove i
End If
Next
Erros = 1
Resume OutraVez
End If
End Sub
que está marcado, da a mensagem de tipos incompativeis.
Podem me ajudar ?
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Scroll Mouse em ListBox
Boa noite a todos.
Bem, ainda não consegui resolver esse problema, mas consegui achar um tutorial, com download, que parece funcionar.
Esse modelo é bem diferente do modelo postado aqui no fórum. Veja se vai lhe atender.
Segue link: Excel VBA USERFORMS #21 Use the Mouse Scroll Wheel for Listbox! Example included
Espero que resolva seu problema.
Abraços e FELIZ NATAL, pra ti e toda sua família.
Bem, ainda não consegui resolver esse problema, mas consegui achar um tutorial, com download, que parece funcionar.
Esse modelo é bem diferente do modelo postado aqui no fórum. Veja se vai lhe atender.
Segue link: Excel VBA USERFORMS #21 Use the Mouse Scroll Wheel for Listbox! Example included
Espero que resolva seu problema.
Abraços e FELIZ NATAL, pra ti e toda sua família.