03.01.2017, 16:15
Hallöchen,
nicht gleich aufgeben. So funktioniert ein Rechtsklick über den Umweg MouseDown. Dieses Ereignis holt ja u.a. den Button und die Position des Mauszeigers. Damit kann man ermitteln, über welchem Eintrag die Maus in dem Moment steht.
Der Doppelklick ist ggf. nicht gerade glücklich, wenn dadurch die Selektion geändert wird.
Zum Test mal eine Userform mit einer Listbox erstellen und der Listbox einen Bereich mit Daten zuweisen, z.B. Tabelle1!A1:A5 wenn da was steht ...
nicht gleich aufgeben. So funktioniert ein Rechtsklick über den Umweg MouseDown. Dieses Ereignis holt ja u.a. den Button und die Position des Mauszeigers. Damit kann man ermitteln, über welchem Eintrag die Maus in dem Moment steht.
Der Doppelklick ist ggf. nicht gerade glücklich, wenn dadurch die Selektion geändert wird.
Zum Test mal eine Userform mit einer Listbox erstellen und der Listbox einen Bereich mit Daten zuweisen, z.B. Tabelle1!A1:A5 wenn da was steht ...
Code:
Private sngLBRHeight As Single
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Variablendeklarationen
'Long
Dim lListRow&
'Wenn der rechte Button gedrueckt wurde, dann
If Button = 2 Then
'Eintragnummer auf Basis der Hoehe der Listbox und der Y-Position des Mauszeigers ermitteln
lListRow = (Y / sngLBRHeight) + ListBox1.TopIndex - 1
'Wenn die Eintragnummer groesser als die Anzahl der Eintraege ist, auf letzten Eintrag setzen
If lListRow > (ListBox1.ListCount - 1) Then lListRow = ListBox1.ListCount - 1
'Ausgabe des gefundenen Eintrags
MsgBox ListBox1.List(lListRow)
'Ende Wenn der rechte Button gedrueckt wurde, dann
End If
End Sub
Private Sub UserForm_Activate()
'Variablendeklarationen
'Single
Dim sngOldHeight!
'Wenn die Hoehe eines Eintrags noch nicht ermittelt wurde, dann
If sngLBRHeight = 0 Then
'Mit der Listbox1
With ListBox1
'Topindex auf letzten Eintrag setzen
.TopIndex = .ListCount - 1
'Hoehe ermitteln
sngOldHeight = .Height
'Solange der Topindex 0 ist
Do While .TopIndex = 0
'Hoehe um 10 reduzieren
.Height = .Height - 10
'Topindex auf letzten Eintrag setzen
.TopIndex = .ListCount - 1
'Ende Solange der Topindex 0 ist
Loop
'Hoehe eines Eintrags berechnen
sngLBRHeight = .Height / (.ListCount - .TopIndex + 1)
'Hoehe auf alten Wert zuruecksetzen
.Height = sngOldHeight
'Topindex auf 0 setzen
.TopIndex = 0
'Ende Mit der Listbox1
End With
'Ende Wenn die Hoehe eines Eintrags noch nicht ermittelt wurde, dann
End If
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)