HERBERS Excel-Forum - das Archiv
ListBox unterscheidet Zeilen mit gleichem Wert nic
Max

Hallo Leute,
Ich habe ein Problem ich habe eine Excel Ordnerliste die In Spalte A die Projektnummer hat und in Spalte B die Ordnerart (1-4). Mit der Aktuellen Maske wird alles was in den Spalten steht in die Textfelder eigetragen. Nur wenn ich Jetzt ein Projekt mit 2, 3 oder 4 Verschiedenen Arten habe dann wird mir beim anklicken in der Listbox immer nur die Information vom ersten Projekt angezeigt.
Meine Frage jetzt wie muss ich meinen Code verändern das mir bei unterschiedlicher Art alles so angezeigt wird wie es an der 2, 3 oder vierten Zeile steht?
  • Option Explicit
    Option Compare Text
    Private Sub UserForm2_Initialize()
    Dim lZeile As Long
    Suche1 = ""
    ListBox1.Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    lZeile = lZeile + 1
    Loop
    End Sub
    
    Private Sub ListBox1_Click()
    Dim lZeile As Long
    Büro = ""
    Keller = ""
    Archiv = ""
    Nummer = ""
    Vernichtet = ""
    Abgegeben = ""
    Typ = ""
    If ListBox1.ListIndex >= 0 Then
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If ListBox1.Text = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then
    Büro = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    Keller = Tabelle2.Cells(lZeile, 4).Value
    Archiv = Tabelle2.Cells(lZeile, 5).Value
    Nummer = Tabelle2.Cells(lZeile, 8).Value
    Typ = Tabelle2.Cells(lZeile, 2).Value
    If Tabelle2.Cells(lZeile, 6).Value = 1 Then
    Vernichtet = "JA"
    Vernichtet.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 7).Value = 1 Then
    Abgegeben = "JA"
    Abgegeben.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 6).Value = "" Then
    Vernichtet = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 7).Value = "" Then
    Abgegeben = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 2 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000&
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 3 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC0C000
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 4 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000C0
    End If
    Exit Do
    End If
    lZeile = lZeile + 1
    Loop
    End If
    End Sub
    
    Private Sub Suche1_Change()
    Dim lZeile As Long
    ListBox1.Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) = Suche1.Text Then
    ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    ListBox1.List(ListBox1.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    ListBox1.List(ListBox1.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    End If
    lZeile = lZeile + 1
    Loop
    End Sub
    


  • AW: ListBox unterscheidet Zeilen mit gleichem Wert nic
    fcs

    Hallo Max,
    mache die Listbox mit 4 Spalten und lese in der 4. Spalte zusätzlich die Zeilennummer der Trefferzeilen ein.
    Im Click-Makro der Listbox muss man dann nicht mehr nach der Zeile mit dem Eintrag suchen, sondern kann direkt auf die Zeile in der Tabelle mit den gewüschten Daten zugreifen.
    Außerdem müssen die Steuerelemente, die die Farbe wechseln am Anfang des Makros auf die Grundfarbe gesetzt werden.
    Gruß
    Franz
    angepasste Makros:
    Option Explicit
    Option Compare Text
    Private Sub UserForm_Initialize()
    Dim lZeile As Long
    Suche1 = ""
    With Me.ListBox1
    .ColumnCount = 4
    .ColumnWidths = "50Pt;25Pt;25Pt;0Pt" 'Spaltenbreiten ggf. anpassen
    .Clear
    'Alle Einträge in Listbox einlesen
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    .AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    .List(.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    .List(.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    .List(.ListCount - 1, 3) = lZeile
    lZeile = lZeile + 1
    Loop
    End With
    End Sub
    Private Sub ListBox1_Click()
    Dim lZeile As Long, lngFarbe As Long
    lngFarbe = &H80000005 'Basisfarbe der Box hintergrunde - weiß
    Büro = ""
    Keller = ""
    Archiv = ""
    Nummer = ""
    Vernichtet = ""
    Abgegeben = ""
    Typ = ""
    Me.Typ.BackColor = lngFarbe
    Me.Abgegeben.BackColor = lngFarbe
    Me.Vernichtet.BackColor = lngFarbe
    If ListBox1.ListIndex >= 0 Then
    lZeile = ListBox1.List(ListBox1.ListIndex, 3)
    Büro = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    Keller = Tabelle2.Cells(lZeile, 4).Value
    Archiv = Tabelle2.Cells(lZeile, 5).Value
    Nummer = Tabelle2.Cells(lZeile, 8).Value
    Typ = Tabelle2.Cells(lZeile, 2).Value
    If Tabelle2.Cells(lZeile, 6).Value = 1 Then
    Vernichtet = "JA"
    Vernichtet.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 7).Value = 1 Then
    Abgegeben = "JA"
    Abgegeben.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 6).Value = "" Then
    Vernichtet = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 7).Value = "" Then
    Abgegeben = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 2 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000&
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 3 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC0C000
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 4 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000C0
    End If
    End If
    End Sub
    Private Sub Suche1_Change()
    Dim lZeile As Long
    With ListBox1
    .Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) = Suche1.Text Then
    .AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    .List(.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    .List(.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    .List(.ListCount - 1, 3) = lZeile
    End If
    lZeile = lZeile + 1
    Loop
    End With
    End Sub
    

    ListBox unterscheidet Zeilen mit gleichem Wert nic
    Max

    Hallo Leute,
    Ich habe ein Problem ich habe eine Excel Ordnerliste die In Spalte A die Projektnummer hat und in Spalte B die Ordnerart (1-4). Mit der Aktuellen Maske wird alles was in den Spalten steht in die Textfelder eigetragen. Nur wenn ich Jetzt ein Projekt mit 2, 3 oder 4 Verschiedenen Arten habe dann wird mir beim anklicken in der Listbox immer nur die Information vom ersten Projekt angezeigt.
    Meine Frage jetzt wie muss ich meinen Code verändern das mir bei unterschiedlicher Art alles so angezeigt wird wie es an der 2, 3 oder vierten Zeile steht?
  • Option Explicit
    Option Compare Text
    Private Sub UserForm2_Initialize()
    Dim lZeile As Long
    Suche1 = ""
    ListBox1.Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    lZeile = lZeile + 1
    Loop
    End Sub
    
    Private Sub ListBox1_Click()
    Dim lZeile As Long
    Büro = ""
    Keller = ""
    Archiv = ""
    Nummer = ""
    Vernichtet = ""
    Abgegeben = ""
    Typ = ""
    If ListBox1.ListIndex >= 0 Then
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If ListBox1.Text = Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) Then
    Büro = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    Keller = Tabelle2.Cells(lZeile, 4).Value
    Archiv = Tabelle2.Cells(lZeile, 5).Value
    Nummer = Tabelle2.Cells(lZeile, 8).Value
    Typ = Tabelle2.Cells(lZeile, 2).Value
    If Tabelle2.Cells(lZeile, 6).Value = 1 Then
    Vernichtet = "JA"
    Vernichtet.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 7).Value = 1 Then
    Abgegeben = "JA"
    Abgegeben.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 6).Value = "" Then
    Vernichtet = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 7).Value = "" Then
    Abgegeben = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 2 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000&
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 3 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC0C000
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 4 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000C0
    End If
    Exit Do
    End If
    lZeile = lZeile + 1
    Loop
    End If
    End Sub
    
    Private Sub Suche1_Change()
    Dim lZeile As Long
    ListBox1.Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) = Suche1.Text Then
    ListBox1.AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    ListBox1.List(ListBox1.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    ListBox1.List(ListBox1.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    End If
    lZeile = lZeile + 1
    Loop
    End Sub
    


  • AW: ListBox unterscheidet Zeilen mit gleichem Wert nic
    fcs

    Hallo Max,
    mache die Listbox mit 4 Spalten und lese in der 4. Spalte zusätzlich die Zeilennummer der Trefferzeilen ein.
    Im Click-Makro der Listbox muss man dann nicht mehr nach der Zeile mit dem Eintrag suchen, sondern kann direkt auf die Zeile in der Tabelle mit den gewüschten Daten zugreifen.
    Außerdem müssen die Steuerelemente, die die Farbe wechseln am Anfang des Makros auf die Grundfarbe gesetzt werden.
    Gruß
    Franz
    angepasste Makros:
    Option Explicit
    Option Compare Text
    Private Sub UserForm_Initialize()
    Dim lZeile As Long
    Suche1 = ""
    With Me.ListBox1
    .ColumnCount = 4
    .ColumnWidths = "50Pt;25Pt;25Pt;0Pt" 'Spaltenbreiten ggf. anpassen
    .Clear
    'Alle Einträge in Listbox einlesen
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    .AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    .List(.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    .List(.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    .List(.ListCount - 1, 3) = lZeile
    lZeile = lZeile + 1
    Loop
    End With
    End Sub
    Private Sub ListBox1_Click()
    Dim lZeile As Long, lngFarbe As Long
    lngFarbe = &H80000005 'Basisfarbe der Box hintergrunde - weiß
    Büro = ""
    Keller = ""
    Archiv = ""
    Nummer = ""
    Vernichtet = ""
    Abgegeben = ""
    Typ = ""
    Me.Typ.BackColor = lngFarbe
    Me.Abgegeben.BackColor = lngFarbe
    Me.Vernichtet.BackColor = lngFarbe
    If ListBox1.ListIndex >= 0 Then
    lZeile = ListBox1.List(ListBox1.ListIndex, 3)
    Büro = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    Keller = Tabelle2.Cells(lZeile, 4).Value
    Archiv = Tabelle2.Cells(lZeile, 5).Value
    Nummer = Tabelle2.Cells(lZeile, 8).Value
    Typ = Tabelle2.Cells(lZeile, 2).Value
    If Tabelle2.Cells(lZeile, 6).Value = 1 Then
    Vernichtet = "JA"
    Vernichtet.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 7).Value = 1 Then
    Abgegeben = "JA"
    Abgegeben.BackColor = &HFF&
    End If
    If Tabelle2.Cells(lZeile, 6).Value = "" Then
    Vernichtet = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 7).Value = "" Then
    Abgegeben = "NEIN"
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 2 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000&
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 3 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC0C000
    End If
    If Tabelle2.Cells(lZeile, 2).Value = 4 Then
    Typ = Tabelle2.Cells(lZeile, 2).Value
    Typ.BackColor = &HC000C0
    End If
    End If
    End Sub
    Private Sub Suche1_Change()
    Dim lZeile As Long
    With ListBox1
    .Clear
    lZeile = 4
    Do While Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) <> ""
    If Trim(CStr(Tabelle2.Cells(lZeile, 1).Value)) = Suche1.Text Then
    .AddItem Trim(CStr(Tabelle2.Cells(lZeile, 1).Value))
    .List(.ListCount - 1, 1) = Trim(CStr(Tabelle2.Cells(lZeile, 2).Value))
    .List(.ListCount - 1, 2) = Trim(CStr(Tabelle2.Cells(lZeile, 3).Value))
    .List(.ListCount - 1, 3) = lZeile
    End If
    lZeile = lZeile + 1
    Loop
    End With
    End Sub
    

    Dialog-Beispiele
    Bewerten Sie hier bitte das Excel-Portal