Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

Listboxeintrag unter Mauszeiger

Betrifft: Listboxeintrag unter Mauszeiger von: Maria von Kageneck
Geschrieben am: 02.07.2008 17:11:51

Hallo zusammen,

ich möchte im MouseMove-Ereignis einer Listbox Zugriff auf den Eintrag unter dem Mauszeiger (also den zugehörigen Index) bekommen.

Alles, was ich im Netz gefunden habe, arbeitet in irgendeiner Form mit der SendMessage-Funktion, die aber ein Handle zu der Listbox benötigt.
Dieses Handle wird in dem von mir gefundenen Code zum Teil einfach über Listbox1.hwnd geholt, das funktioniert bei mir aber leider nicht :-(

Weiß irgendjemand Rat??

Für Hilfe sehr dankbar

Maria

  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: ChristophM
Geschrieben am: 02.07.2008 17:46:43

Hallo Maria,
Um den SendMessage kommst du wohl nicht drum rum. Aber das ist auch kein Problem, du musst eben die API's im Code benennen.
Hier ein Bsp. aus meinem Fundus.

https://www.herber.de/bbs/user/53538.xls

Gib mir Bescheid, wie du damit parat kommst.

Grüße
ChristophM


  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: Maria von Kageneck
Geschrieben am: 02.07.2008 19:36:57

Hei Christoph,

erst eimal vielen Dank!! Es scheint zu funktionieren.


aus Deinem Code habe ich nur den einen Teil:

intIndex = Round((Y - 5) / 10)

übernehmen müssen, um an den Index zu kommen. (gar keine SendMessage und nix...)

Nun frage ich mich, wie das mit so fixen Werten ("5" und "10") funktionieren kann und ob das bei allen Auflösungen dann auch läuft.

Weißt Du das??

Vielen Dank auf jeden Fall,

Gruß von

Maria


  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: ChristophM
Geschrieben am: 03.07.2008 07:19:58

Hallo Maria,
die Berechnung hängt von der Schriftgröße ab. In meinem Beispiel ist die Schrift 'Verdarna 9'.
Nepumuks Lösung ist hie eleganter. Auf meinen Code übersetzt wäre dann:

statt:
Me.lstKat.ListIndex = Round((Y - 5) / 10)

dieses einzusetzen:
Me.lstKat.ListIndex = Int(Y / (Me.lstKat.Font.Size + 2))

Grüße
Christoph


  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: Maria von Kageneck
Geschrieben am: 03.07.2008 17:46:26

Hei Christoph,

noch einmal vielen Dank!

Aaaber, meine Liste ist zum Scrollen und das wird ja gar nicht verarbeitet.... Es werden quasi immer einfach die sichtbaren Einträge gezählt... :-((

Naja, ich schau mal, Du hast mir auf jeden Fall sehr geholfen,

Gruß von

Maria


  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: Nepumuk
Geschrieben am: 02.07.2008 17:49:47

Hallo Maria,

na wenn das alles ist, dann hab ich was für dich.

' **********************************************************************
' Modul: UserForm2 Typ: Userform
' **********************************************************************

Option Explicit

Dim lintFontSize As Integer

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

    Dim intListIndex As Integer
    intListIndex = ListBox1.TopIndex + Int(Y / lintFontSize)
    If intListIndex <= ListBox1.ListCount - 1 Then _
        Label1.Caption = ListBox1.List(intListIndex, 0)
End Sub

Private Sub UserForm_Activate()
    lintFontSize = ListBox1.Font.Size + 2
End Sub

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

    Label1.Caption = ""
End Sub

Kommst du klar damit?

Gruß
Nepumuk


  

Betrifft: ... funktioniert leider nicht :-( von: Maria von Kageneck
Geschrieben am: 02.07.2008 19:27:38

Hallo Nepumuk,

vielen Dank für Deine Antwort.

Ich habe es mit Deinem Code probiert, aber, da bei mir ListBox1.TopIndex immer eine 0 zurückgibt, funktioniert es leider nicht...

Weißt Du Rat??

Vielen Dank

Maria


  

Betrifft: AW: ... funktioniert leider nicht :-( von: Nepumuk
Geschrieben am: 02.07.2008 20:18:53

Hallo Maria,

das ist auch gut so, denn wenn er nicht Null wäre, dann wird das Formular nicht angezeigt, oder die Liste ist leer. Versuch es mal mit der Beispielmappe:

https://www.herber.de/bbs/user/53543.xls

Gruß
Nepumuk


  

Betrifft: hast Recht, jetzt läuft's von: Maria von Kageneck
Geschrieben am: 03.07.2008 17:57:08

Hei Nepumuk,

ja, stimmt es läuft!
Super, vielen Dank!

Gruß von

Maria


  

Betrifft: AW: Listboxeintrag unter Mauszeiger von: Herbert
Geschrieben am: 06.07.2008 16:33:36

Hi,

interessante Lösung, leider geklaut!

mfg Herbert


 

Beiträge aus den Excel-Beispielen zum Thema "Listboxeintrag unter Mauszeiger"