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 ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Listbox

Betrifft: Listbox von: Wolfgang
Geschrieben am: 27.10.2020 10:31:06

Hallo Forum,
ich habe aus dem Internet eine Adressdatei mit Listbox für 5 Spalten heruntergeladen und diese für 11 Spalten
geändert. Leider funktioniert die Sub NachnameSuchen nicht. Der Debugger unterlegt die Zeile: "Me.Listbox1.Clear mit gelb. Auch bei der Sub Listbox1_Click wird die Zeile IngZeile = Me.Listbox1 ....... gelb unterlegt.
Da ich nicht weis wie man die beiden Subs umstellt wäre ich für eine Hilfe sehr dankbar.
Gruß Wolfgang

Private Sub NachnameSuchen_Click()                              'Button "Nachnamen suchen"
 Dim lngZeile As Long
 Dim lngZeileMax As Long
 Dim i As Integer
 
 Me.ListBox1.Clear
 
 With Tabelle1
  lngZeileMax = .Cells(.Rows.Count, 1).End(xlUp).Row
  For lngZeile = 3 To lngZeileMax
    If InStr(UCase(.Cells(lngZeile, 2).Value), _
             UCase(Me.TextBox2.Value)) > 0 Then
     Me.ListBox1.AddItem .Cells(lngZeile, 1).Value
     Me.ListBox1.Column(1, i) = .Cells(lngZeile, 2).Value
     Me.ListBox1.Column(2, i) = .Cells(lngZeile, 3).Value
     Me.ListBox1.Column(3, i) = .Cells(lngZeile, 4).Value
     Me.ListBox1.Column(4, i) = .Cells(lngZeile, 5).Value
     Me.ListBox1.Column(5, i) = lngZeile
     i = i + 1
    End If
  Next lngZeile
 End With
 
 End Sub

Private Sub ListBox1_Click()                   'Mit Klick auf Datensatz in Listbox wird in  _
Textboxen geschrieben
  Dim lngZeile As Long
  Dim i As Integer

  lngZeile = Me.ListBox1.Column(11, Me.ListBox1.ListIndex)
  
  For i = 1 To 11
   Me.Controls("TextBox" & i).Value = Tabelle1.Cells(lngZeile, i).Value
  Next i

End Sub

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 10:39:44

Hallo Wolfgang,

füllst du die ListBox primär per RowSource-Eigenschaft?

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 10:46:43

Private Sub UserForm_Initialize()
Dim ZeileMax As Long
Dim Vardat As Variant
ZeileMax = Tabelle1.Cells(Tabelle1.Rows.Count, 1).End(xlUp).Row
Vardat = Tabelle1.Range("A2:L" & ZeileMax).Value
With Me.ListBox1
.ColumnHeads = True
.ColumnWidths = "50;110;110;110;110;50;170;110;110;140;110"
.ColumnCount = Tabelle1.Range("A2:L2").Columns.Count
.RowSource = Tabelle1.Range("A3:L" & ZeileMax).Address
End With
End Sub


Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 10:54:01

Hallo Wolfgang,

teste mal:

Private Sub NachnameSuchen_Click()
    'Button "Nachnamen suchen"
    Dim lngZeile As Long
    Dim i As Long
    Dim strSearch As String
    
    With ListBox1
        .RowSource = vbNullString
        .Clear
    End With
    
    strSearch = UCase$(TextBox2.Value)
    
    With Tabelle1
        
        For lngZeile = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
            
            If InStr(UCase$(.Cells(lngZeile, 2).Value), strSearch) > 0 Then
                
                ListBox1.AddItem .Cells(lngZeile, 1).Value
                ListBox1.Column(1, i) = .Cells(lngZeile, 2).Value
                ListBox1.Column(2, i) = .Cells(lngZeile, 3).Value
                ListBox1.Column(3, i) = .Cells(lngZeile, 4).Value
                ListBox1.Column(4, i) = .Cells(lngZeile, 5).Value
                ListBox1.Column(5, i) = lngZeile
                i = i + 1
                
            End If
        Next lngZeile
    End With
End Sub

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 11:06:00

Hallo Nepumuk,
danke, funktioniert sehr gut.
Jetzt fehlt nur noch die Sub Listbox1_Click. Erst wenn diese funktioniert kann ich die
Sub DatensatzLöschen und die Sub DatensatzÄndern prüfen.
Gruß Wolfgang

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 11:22:23

Hallo Wolfgang,

so?

Private Sub ListBox1_Click() 'Mit Klick auf Datensatz in Listbox wird in Textboxen geschrieben
    
    Dim lngZeile As Long
    Dim i As Long
    
    With ListBox1
        If .RowSource = vbNullString Then
            lngZeile = .Column(5, .ListIndex)
        Else
            lngZeile = .ListIndex
        End If
    End With
    
    For i = 1 To 11
        Controls("TextBox" & i).Text = Tabelle1.Cells(lngZeile, i).Text
    Next i
    
End Sub

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 11:23:54

Stop, da ist noch ein Fehler drin.

lngZeile = .ListIndex + 1

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 11:52:11

Hallo Nepumuk,
auch dies funktioniert bis auf: Klick auf Satz 1007 zeigt Satz 1005 an, 1013 zeigt 1011 an. Es werden immer zwei Sätze davor angezeigt.
Gruß Wolfgang

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 11:53:53

Hallo Wolfgang,

na dann ziehe von der Zeile 2 ab.

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 12:07:00

Hallo Nepumuk,
viele Codes versteht ich nicht, sodass ich auch hier nicht weis in welcher Zeile an welcher Stelle ich 2 abziehen muss. Meine Versuche sind alle gescheitert.
Gruß Wolfgang

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 12:43:46

Hallo Wolfgang,

kannst du eine Mustermappe mit ein paar Beispieldaten hochladen damit ich es testen kann?

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 13:16:53

https://www.herber.de/bbs/user/141123.xlsm

Hallo Nepumuk, anbei meine Musterdatei. Wenn die App Listbox1_Click funktioniert sind noch die Sub DatensatzLöschen und die Sub DatensatzÄndern zu prüfen.
Gruß Wolfgang

Betrifft: AW: Listbox
von: Nepumuk
Geschrieben am: 27.10.2020 14:05:10

Hallo Wolfgang,

teste mal:

https://www.herber.de/bbs/user/141124.xlsm

Gruß
Nepumuk

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 15:13:23

Hallo Nepumuk,
vielen Dank für Deine perfekte Hilfe. Alles klappt nun hervorragend. Dies hätte ich nicht hinbekommen.
Ich habe mir schon viele Codes aus dem Internet geholt. Aber alles über Listboxen endet bei 10 Spalten.
Gruß Wolfgang

Betrifft: Datensatz ändern geht bei dir? Datei 141124.xlsm
von: Helmut
Geschrieben am: 27.10.2020 15:37:05

Hallo Wolfgang,

bei mir geht diese Funktion nicht.

Hast Du etwas in dieser Datei geändert ?
Wenn Ja, bitte bekanntgeben :-)

Gruß Helmut

Betrifft: AW: Datensatz ändern geht bei dir? Datei 141124.xlsm
von: Wolfgang
Geschrieben am: 27.10.2020 15:53:38

Hallo Helmut,
ich habe die Sub DatensatzÄndern gerade nochmal getestet und festgestellt, dass man zwar den Nachnamen ändern kann, aber die sonstigen Textfelder nicht. Ich hatte nur den Nachnamen getestet und die anderen Felder nicht. Dass man nur den Nachnahmen ändern kann macht jedoch keinen Sinn. Man will ja beim Nachnamen evtl. nur die Anschrift oder Telefonnummer ändern.
Vielleicht liest ja Nepumuk diese Zeilen und meldet sich bei uns wieder
Gruss Wolfgang

Betrifft: AW: Datensatz ändern geht bei dir? Datei 141124.xlsm
von: Nepumuk
Geschrieben am: 27.10.2020 16:16:43

Hallo Ihr zwei,

ich hatte es auch nur mit dem Namen getestet. Als Trostpflaster habe ich dir das scrollen in der Listbox eingebaut. Zum horizontalen scrollen die STRG-Taste gedrückt halten.

https://www.herber.de/bbs/user/141131.xlsm

Gruß
Nepumuk

Betrifft: AW: Datensatz ändern geht bei dir? Datei 141124.xlsm
von: Nepumuk
Geschrieben am: 27.10.2020 16:23:41

Hallo Ihr zwei,

und damit es gleich nach dem öffnen des Userforms funktioniert, noch diese Prozedur ändern:

Private Sub UserForm_Initialize()
    Dim ZeileMax As Long
    ZeileMax = Tabelle1.Cells(Tabelle1.Rows.Count, 1).End(xlUp).Row
    With ListBox1
        .ColumnHeads = True
        .ColumnWidths = "50;110;110;110;110;50;170;110;110;140;110"
        .ColumnCount = Tabelle1.Range("A2:L2").Columns.Count
        .RowSource = Tabelle1.Range("A3:L" & ZeileMax).Address
        .SetFocus
    End With
End Sub

Gruß
Nepumuk

Betrifft: AW:Danke Nepumuk, jetzt alles OK :-) kwT
von: Helmut
Geschrieben am: 27.10.2020 16:39:42



Betrifft: AW: AW:Danke Nepumuk, jetzt alles OK :-) kwT
von: Wolfgang
Geschrieben am: 27.10.2020 16:43:07

Nochmals danke für alles.
Gruß Wolfgang

Betrifft: AW: Listbox
von: ralf_b
Geschrieben am: 27.10.2020 10:41:12

und was passiert wenn du das Me. wegläßt?

Betrifft: AW: Listbox
von: Wolfgang
Geschrieben am: 27.10.2020 10:54:58

Hallo,
auf die Frage von ralf_b: Es geschieht nichts. Gleicher Fehler

Beiträge aus dem Excel-Forum zum Thema "Listbox"