Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox Datei

Listbox Datei
05.10.2019 22:19:04
Thomas
Hallo Excelfreunde,
ich habe im Netz eine Coole Dateí gefunden.
Diese habe ich schon geschafft in meine Hauptdatei einzubauen.
Aber wie es immer so ist, würde ich gern noch etwas ändern.
Mit dieser Zeile
'von mir
DemoForm.ListBox1.Selected(DemoForm.ListBox1.TopIndex) = True
habe ich es schon geschafft das immer der erste Eintrag in der Listbox markiert ist.
Ist es auch möglich das immer der Eintrag markiert ist über der sich gerade die Mouse befindet?
https://www.herber.de/bbs/user/132355.xlsm
mfg thomas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Datei
06.10.2019 12:59:57
Nepumuk
Hallo Thomas,
teste mal:
Option Explicit

Private mlngFontSize As Long 'neu *****************************

Private Sub btnClose_Click()
    Unload Me
End Sub

Private Sub CheckBox1_Click()
    ' HookMouseToForm Me, CheckBox1.Value
End Sub

Private Sub CommandButton1_Click()
    MsgBox "Demo"
End Sub

Private Sub CommandButton2_Click()
    Debug.Print 1 / 0
End Sub

Private Sub Frame2_Click()
    
End Sub

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) 'neu *****************************
    With ListBox1
        .ListIndex = .TopIndex + Int(Y / mlngFontSize)
    End With
End Sub

Private Sub UserForm_Initialize()
    mlngFontSize = ListBox1.Font.Size + 2 'neu *****************************
    Me.StartUpPosition = 0
    Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
    Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
    AddDemoData
    HookMouseToForm Me
End Sub

Private Sub AddDemoData()
    Dim i As Long
    Dim tValue As String
    
    For i = 1 To 100
        ListBox1.AddItem i
        'ComboBox1.AddItem i
        'TextBox1.Value = TextBox1.Value & vbNewLine & i
    Next i
End Sub

Gruß
Nepumuk
Anzeige
es klappt. Besten dank an Nepumuk
07.10.2019 07:02:10
Thomas
Hallo Nepumuk,
sorry das ich mich erst jetzt melde war am WE eingespannt.
Es klappt perfekt ohne Absturz. Hab besten dank für deine Hilfe.
Ich freu mich riesig.
mfg thomas
doch noch etwas
07.10.2019 08:43:10
Thomas
Hallo Nepumuk,
ich habe doch noch zwei Sachen gefunden.
Kannst Du noch einbauen das bei einem Klick auf einen Datensatz das Mousmove abgeschalten und bei erneuten Klick wieder zugeschalten wird? Sonst kann ich den angeklickten Datensatz nicht bearbeiten.
Dies habe ich vorher leider nicht bemerkt.
Und die zweite Sache ist, Wenn die Listbox länger wird und man dann mit der Mouse nach unten fährt ist der Datensatz versetzt. ( Position Maus und der Markierung ) Bei einem Klick geht die Markierung erst nach oben und dann wieder nach unten.
Kannst Du dir dies nochmal anschauen?
https://www.herber.de/bbs/user/132366.xlsm
mfg thomas
Anzeige
AW: doch noch etwas
07.10.2019 10:30:26
Nepumuk
Hallo Thomas,
so besser?
    With ListBox1
.ListIndex = .TopIndex + Int(Y / mlngFontSize - Y / 300)
End With

Gruß
Nepumuk
AW: doch noch etwas
07.10.2019 14:56:57
Thomas
Hallo Nepumuk,
das ist jetzt perfekt.
Ich dachte mir schon das dies die Stellschraube ist, aber ich habe es einfach nicht hinbekommen.
Das mit dem abschalten ( bei klick ) versuche ich heute Abend noch mal selbst hinzubekommen.
Dies
If Schalter2 = False Then
Schalter2 = True
'MsgBox X
Else
Schalter2 = False
'MsgBox X
End If
klappt noch nicht. Da der ListBox1_Click auch ausgelöst wird wenn das ListBox1_MouseMove arbeitet.
Da Knobel ich mal noch.
Hab erstmal recht vielen vielen dank das du nochmal geschaut hast.
mfg thomas
Anzeige
AW: doch noch etwas
07.10.2019 16:14:44
Nepumuk
Hallo Thomas,
zur 2. Sache, teste mal:
Option Explicit

Private mlngFontSize As Long
Private mblnSelected As Boolean

Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    mblnSelected = Not mblnSelected
End Sub

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Not mblnSelected Then
        With ListBox1
            .ListIndex = .TopIndex + Int(Y / mlngFontSize - Y / 300)
        End With
    End If
End Sub

Gruß
Nepumuk
Anzeige
riesen dank an Nepumuk
07.10.2019 21:41:39
Thomas
Hallo Nepumuk,
nur gut das es solche Excelfreunde wie dich gibt.
Ich habe drei Stunden versucht dies allein zu lösen.
Aber egal was ich für Ideen hatte, nichts hat funktioniert.
Deine Lösung klappt super. Dies hätte ich nie allein geschafft,
Hab recht vielen dank für deine Lösung.
Nun werde ich mal versuchen herauszubekommen wie du auf die 300 gekommen bist.
.ListIndex = .TopIndex + Int(Y / mlngFontSize - Y / 300)
das ist mir ein komplettes Rätzel. ( neben den anderen )
Ich wünsche dir noch eine ruhige stressfreie Woche.
mfg thomas
AW: riesen dank an Nepumuk
07.10.2019 21:47:52
Nepumuk
Hallo Thomas,
die 300 sind ein Ergebnis von 3 Versuchen. Angefangen habe ich mit 200, das war zu wenig, dann 250, auch noch zu wenig, 300 hat dann gepasst.
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige