Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listboxeinträge per Doppelklick in Userform laden

Listboxeinträge per Doppelklick in Userform laden
Roger
Guten Tag,
Ich habe eine Listbox:
Private Sub Suche(suchbegriff_1 As String, suchbegriff_2 As String)
Dim i As Long, k As Integer
Dim n As Long
On Error Resume Next
Dim arrTMP As Variant
ReDim arrTMP(1 To UBound(arrDaten, 2), 1 To UBound(arrDaten))
For i = 1 To UBound(arrDaten)
If LCase$(arrDaten(i, 1)) Like suchbegriff_1 & "*" Then
If LCase$(arrDaten(i, 2)) Like suchbegriff_2 & "*" Then
n = n + 1
For k = 1 To UBound(arrDaten, 2)
arrTMP(k, n) = arrDaten(i, k)
Next
End If
End If
Next
If n Then
ReDim Preserve arrTMP(1 To UBound(arrDaten, 2), 1 To n)
ListBox1.Column = arrTMP
End If
End Sub
Die Daten übertrage ich in eine Sheet.
Private Sub Commandbutton2_Click()
Set Frm = UserForm3
Sheets("Hauptblatt").Activate
Cells(65536, 1).End(xlUp).Offset(1, 0).Select
With Frm
ActiveCell.Offset(0, 0).Value = .TextBox1.Value
ActiveCell.Offset(0, 1).Value = .TextBox2.Value
ActiveCell.Offset(0, 2).Value = .TextBox3.Value
ActiveCell.Offset(0, 3).Value = .TextBox4.Value
ActiveCell.Offset(0, 4).Value = .TextBox5.Value
ActiveCell.Offset(0, 5).Value = .TextBox6.Value
ActiveCell.Offset(0, 6).Value = .TextBox7.Value
ActiveCell.Offset(0, 7).Value = .TextBox8.Value
ActiveCell.Offset(0, 8).Value = .TextBox9.Value
ActiveCell.Offset(0, 9).Value = .TextBox10.Value
ActiveCell.Offset(0, 10).Value = .CheckBox1.Value
ActiveCell.Offset(0, 11).Value = .CheckBox2.Value
ActiveCell.Offset(0, 12).Value = .CheckBox3.Value
ActiveCell.Offset(0, 13).Value = .CheckBox4.Value
ActiveCell.Offset(0, 14).Value = .CheckBox5.Value
ActiveCell.Offset(0, 15).Value = .CheckBox6.Value
ActiveCell.Offset(0, 16).Value = .CheckBox7.Value
ActiveCell.Offset(0, 17).Value = .CheckBox8.Value
ActiveCell.Offset(0, 18).Value = .CheckBox9.Value
ActiveCell.Offset(0, 19).Value = .CheckBox10.Value
ActiveCell.Offset(0, 20).Value = .TextBox11.Value
ActiveCell.Offset(0, 21).Value = .TextBox12.Value
ActiveCell.Offset(0, 22).Value = .TextBox13.Value
ActiveCell.Offset(0, 23).Value = .TextBox14.Value
ActiveCell.Offset(0, 24).Value = .TextBox15.Value
ActiveCell.Offset(0, 25).Value = .TextBox16.Value
ActiveCell.Offset(0, 26).Value = .TextBox17.Value
ActiveCell.Offset(0, 27).Value = .TextBox18.Value
End With
Unload UserForm3
End Sub
Soweit so gut :-)
Jetzt möchte ich, wenn ich den Eintrag in der Listbox mit Doppelklick auswähle, dass die Userform mit den ausgwählten Daten geladen wird.
Besten Dank für die Hilfe.
Gruss und ein Guter Start in die Woche.
Roger
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listboxeinträge per Doppelklick in Userform laden
13.03.2012 11:17:32
Roger
Habs so gelöst. Funktioniert. Gebe sicher eine einfachere Lösung.
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
UserForm3.TextBox1 = ListBox1.List(ListBox1.ListIndex, 0)
UserForm3.TextBox2 = ListBox1.List(ListBox1.ListIndex, 1)
UserForm3.TextBox3 = ListBox1.List(ListBox1.ListIndex, 2)
UserForm3.TextBox4 = ListBox1.List(ListBox1.ListIndex, 3)
UserForm3.TextBox5 = ListBox1.List(ListBox1.ListIndex, 4)
UserForm3.TextBox6 = ListBox1.List(ListBox1.ListIndex, 5)
UserForm3.TextBox7 = ListBox1.List(ListBox1.ListIndex, 6)
UserForm3.TextBox8 = ListBox1.List(ListBox1.ListIndex, 7)
UserForm3.TextBox9 = ListBox1.List(ListBox1.ListIndex, 8)
UserForm3.TextBox10 = ListBox1.List(ListBox1.ListIndex, 9)
UserForm3.CheckBox1 = ListBox1.List(ListBox1.ListIndex, 10)
UserForm3.CheckBox2 = ListBox1.List(ListBox1.ListIndex, 11)
UserForm3.CheckBox3 = ListBox1.List(ListBox1.ListIndex, 12)
UserForm3.CheckBox4 = ListBox1.List(ListBox1.ListIndex, 13)
UserForm3.CheckBox5 = ListBox1.List(ListBox1.ListIndex, 14)
UserForm3.CheckBox6 = ListBox1.List(ListBox1.ListIndex, 15)
UserForm3.CheckBox7 = ListBox1.List(ListBox1.ListIndex, 16)
UserForm3.CheckBox8 = ListBox1.List(ListBox1.ListIndex, 17)
UserForm3.CheckBox9 = ListBox1.List(ListBox1.ListIndex, 18)
UserForm3.CheckBox10 = ListBox1.List(ListBox1.ListIndex, 19)
UserForm3.CheckBox11 = ListBox1.List(ListBox1.ListIndex, 28)
UserForm3.TextBox11 = ListBox1.List(ListBox1.ListIndex, 20)
UserForm3.TextBox12 = ListBox1.List(ListBox1.ListIndex, 21)
UserForm3.TextBox13 = ListBox1.List(ListBox1.ListIndex, 22)
UserForm3.TextBox14 = ListBox1.List(ListBox1.ListIndex, 23)
UserForm3.TextBox15 = ListBox1.List(ListBox1.ListIndex, 24)
UserForm3.TextBox16 = ListBox1.List(ListBox1.ListIndex, 25)
UserForm3.TextBox17 = ListBox1.List(ListBox1.ListIndex, 26)
UserForm3.TextBox18 = ListBox1.List(ListBox1.ListIndex, 27)
Unload UserForm10
If UserForm3.Visible Then
Else
UserForm3.Show
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Listboxeinträge per Doppelklick in Userform laden


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Userform: Öffne den VBA-Editor in Excel (Alt + F11) und füge eine neue Userform hinzu. Nenne sie UserForm3.

  2. Füge eine ListBox hinzu: Ziehe eine ListBox auf die Userform und nenne sie ListBox1.

  3. Füge TextBoxen und CheckBoxen hinzu: Füge die benötigten TextBoxen (TextBox1 bis TextBox18) und CheckBoxen (CheckBox1 bis CheckBox10) zur Userform hinzu.

  4. Implementiere die Suche: Verwende den folgenden Code, um die ListBox mit Daten zu füllen, basierend auf den Suchbegriffen:

    Private Sub Suche(suchbegriff_1 As String, suchbegriff_2 As String)
       Dim i As Long, k As Integer
       Dim n As Long
       On Error Resume Next
       Dim arrTMP As Variant
       ReDim arrTMP(1 To UBound(arrDaten, 2), 1 To UBound(arrDaten))
       For i = 1 To UBound(arrDaten)
           If LCase$(arrDaten(i, 1)) Like suchbegriff_1 & "*" Then
               If LCase$(arrDaten(i, 2)) Like suchbegriff_2 & "*" Then
                   n = n + 1
                   For k = 1 To UBound(arrDaten, 2)
                       arrTMP(k, n) = arrDaten(i, k)
                   Next
               End If
           End If
       Next
       If n Then
           ReDim Preserve arrTMP(1 To UBound(arrDaten, 2), 1 To n)
           ListBox1.Column = arrTMP
       End If
    End Sub
  5. Füge den Doppelklick-Event hinzu: Füge den folgenden Code in das Code-Fenster von UserForm3 ein, um die Daten bei Doppelklick zu laden:

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       UserForm3.TextBox1 = ListBox1.List(ListBox1.ListIndex, 0)
       UserForm3.TextBox2 = ListBox1.List(ListBox1.ListIndex, 1)
       ' ... (weiter für alle TextBoxen und CheckBoxen)
       If UserForm3.Visible Then
       Else
           UserForm3.Show
       End If
    End Sub
  6. Daten speichern: Implementiere den folgenden Code, um die Daten von der Userform auf das Sheet zu übertragen:

    Private Sub Commandbutton2_Click()
       Set Frm = UserForm3
       Sheets("Hauptblatt").Activate
       ' ... (Code zum Speichern der Daten)
       Unload UserForm3
    End Sub

Häufige Fehler und Lösungen

  • Fehler: ListBox bleibt leer: Stelle sicher, dass die Suche-Methode korrekt aufgerufen wird und dass arrDaten tatsächlich Daten enthält.

  • Fehler: Userform schließt sich sofort: Überprüfe, ob der Unload-Befehl im Doppelklick-Event nicht zu früh ausgeführt wird.

  • Fehler: Doppelklick funktioniert nicht: Stelle sicher, dass die ListBox die richtige Indexnummer verwendet und dass der Doppelklick-Event korrekt zugewiesen ist.


Alternative Methoden

  • Verwendung von ComboBox: Statt einer ListBox kannst du auch eine ComboBox verwenden, um die Auswahl zu erleichtern. Die Implementierung ist ähnlich.

  • Datenbankanbindung: Für größere Datenmengen kannst du in Betracht ziehen, eine Datenbank zu verwenden und die Daten per SQL-Abfragen zu laden.


Praktische Beispiele

  • Beispiel 1: Wenn du eine Liste von Kunden hast, kannst du diese in der ListBox anzeigen und beim Doppelklick die Kundendaten in die TextBoxen laden.

  • Beispiel 2: Bei der Verwaltung von Produkten kannst du die Produktdetails in der Userform anzeigen, wenn ein Produkt in der ListBox ausgewählt wird.


Tipps für Profis

  • Optimierung der Datenabfrage: Verwende Filtermethoden, um die Datenabfrage in der Suche-Methode zu optimieren, insbesondere bei großen Datenmengen.

  • Benutzerfreundlichkeit: Füge Schaltflächen hinzu, um die Userform zu schließen oder die Eingaben zurückzusetzen, um die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die ListBox mit Daten aus einem anderen Blatt füllen?
Antwort: Du kannst die Suche-Methode so anpassen, dass sie Daten aus einem anderen Arbeitsblatt abruft, indem du Worksheets("Name").Range verwendest.

2. Frage
Kann ich mehrere Einträge in der ListBox auswählen?
Antwort: Ja, setze die MultiSelect-Eigenschaft der ListBox auf fmMultiSelectMulti, um mehrere Auswahlen zu ermöglichen.

3. Frage
Wie kann ich die Userform automatisch öffnen, wenn die Datei geöffnet wird?
Antwort: Du kannst das Workbook_Open-Ereignis im ThisWorkbook-Modul verwenden, um die Userform beim Öffnen der Datei anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige