Microsoft Excel

Herbers Excel/VBA-Archiv

MouseMove in Listbox


Betrifft: MouseMove in Listbox
von: Thomas
Geschrieben am: 31.08.2019 12:23:04

Hallo Excelfreunde,

wenn man in meiner Listbox mit der Mouse drüber geht (MouseMove) werden bestimmte Textfelder oder Label ( hab mich noch nicht entschieden) gefüllt. Dies funktioniert auch mit diesen Beispiel gut.

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)

'' If Schalter = True Then

        On Error Resume Next
        i = Int(Y / n) + 1
        DoEvents
        If i <= ListBox1.ListCount Then
            'If Label1.Caption <> ListBox1.List(i - 1) Then
            'Label1.Caption = ListBox1.List(i - 1)
            Label1.Caption = ListBox1.List(ListBox1.ListIndex, 0) & Chr(10) & _
            ListBox1.List(ListBox1.ListIndex, 1) & Chr(10) & _
            ListBox1.List(ListBox1.ListIndex, 2) & Chr(10)
        TextBox1 = ListBox1.List(ListBox1.ListIndex, 1)
        TextBox2 = ListBox1.List(ListBox1.ListIndex, 2)
            ListBox1.Selected(i - 1) = True
                    
        End If

''Else

''End If
End Sub
Nun möchte ich erreichen das bei einem Mouse-click in die Listbox das MouseMove

abgeschälten wird und bei einem erneuten Mouse-click wieder eingeschalten wird.

Ich versuche dies gerade mit einer "Public Schalter As Boolean" Variable umzusetzen.

Aber leider gelingt mir dies nicht.
Private Sub ListBox1_Click()
If Schalter = True Then
Schalter = False
'MsgBox " Schalter steht auf False"
End If


If Schalter = False Then
Schalter = True
'MsgBox " Schalter steht auf true"
End If


End Sub
Hat jemand ein Rat für mich?

Ich habe dazu ein kleines Beispiel erstellt.

http://www.herber.de/bbs/user/131755.xlsb

Habt schon mal rechtvielen dank für euer Interesse .

mfg thomas

  

Betrifft: AW: MouseMove in Listbox
von: Mullit
Geschrieben am: 31.08.2019 23:07:11

Hallo,

das ginge mit dem MouseUp-Event, Du solltest Dich viell. auch noch von der On Error Geschichte trennen und sauberer ohne proggen:

Option Explicit

Private Schalter As Boolean

'...

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)

If Schalter Then

      '...

End If

End Sub

Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
 ByVal Y As Single)
If Button = 1 Then Schalter = Not Schalter
End Sub

Gruß, Mullit


  

Betrifft: es klappt besten dank an Mullit
von: Thomas
Geschrieben am: 01.09.2019 01:31:22

Hallo Mullit,

sorry das ich erst jetzt antworte. Bin gerade erst nach Hause gekommen.

Dein Vorschlag funktioniert super.

Auch dein Hinweis mit der " On Error Geschichte" werde ich mehr beherzigen.
Ich benutze dies in der Tat meistens dann wenn ich einfach nichts besseres weiß. Und dies ist leider noch zu oft.


Hab rechtvielen dank für dein Interesse und für deine Lösung. Allein wäre ich darauf nie gekommen.

mfg thomas