Clever-Excel-Forum

Normale Version: Listbox Dbl Click Komentar einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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 ...

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
Seiten: 1 2