Herbers Excel-Forum - das Archiv

Tabellenblätter vergleichen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox UserForm


Betrifft: Tabellenblätter vergleichen
von: Tim

Geschrieben am: 10.09.2019 17:04:50
Hallo zusammen,
ich habe auf einer Userform eine Listbox die ich beim Starten einlese.
Jetzt stehe ich vor der Herausforderung, dass bei doppelten Werten "Name" zwischen dem Tabellenblatt "Mitarbeiter" & "Arbeitszeit", den Wert aus der Arbeitszeit führend ist und der doppelte Wert aus dem Tabellenblatt "Mitarbeiter" nicht mit eingelesen werden soll.
Meine versuche das zu lösen scheiterten, deshalb bitte ich euch um eure Unterstützung
Dazu habe ich folgende Bsp.Datei, wer kann mir dabei helfen?
https://www.herber.de/bbs/user/131960.xlsm

Betrifft: AW: Tabellenblätter vergleichen
von: 1712575.html

Geschrieben am: 12.09.2019 07:26:24
Hallo Tim,
z.B. so:
Private Sub UserForm_Initialize()
Dim i As Long
UserForm1.ListBox1.ColumnCount = 6 'Anzahl der Spalten
UserForm1.ListBox1.ColumnWidths = "4cm;3cm;3cm;3cm;3cm;2cm" 'Spaltenbreite in cm
Me.ListBox1.Clear
With Worksheets("Arbeitszeiten")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
Me.ListBox1.AddItem .Cells(i, 1)
Next i
End With
With Worksheets("Mitarbeiter")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Worksheets("Arbeitszeiten") _
.Columns(1), .Cells(i, 1)) = 0 Then
Me.ListBox1.AddItem .Cells(i, 1)
End If
Next i
End With
End Sub

Gruß Werner

Betrifft: AW: Tabellenblätter vergleichen
von: 1712614.html

Geschrieben am: 12.09.2019 09:38:36
Hallo Werner,
funktioniert soweit wie gewünscht, jedoch bekomme ich Probleme wenn ich den nächsten Wert zu Spalte B übernehmen will.
Ich habe das wie folgt versucht:
Private Sub UserForm_Initialize()
Dim i As Long
UserForm1.ListBox1.ColumnCount = 6 'Anzahl der Spalten
UserForm1.ListBox1.ColumnWidths = "4cm;3cm;3cm;3cm;3cm;2cm" 'Spaltenbreite in cm
Me.ListBox1.Clear
With Worksheets("Arbeitszeiten")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
Me.ListBox1.AddItem .Cells(i, 1)
'Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(i, 2) = diese stelle führt zu  _
Problemen
Next i
End With
With Worksheets("Mitarbeiter")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Worksheets("Arbeitszeiten") _
.Columns(1), .Cells(i, 1)) = 0 Then
Me.ListBox1.AddItem .Cells(i, 1)
Me.ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(i, 2)
End If
Next i
End With
End Sub

Betrifft: AW: Tabellenblätter vergleichen
von: 1712633.html

Geschrieben am: 12.09.2019 10:45:04
Hallo Tim,
so:
Private Sub UserForm_Initialize()
Dim i As Long
UserForm1.ListBox1.ColumnCount = 6 'Anzahl der Spalten
UserForm1.ListBox1.ColumnWidths = "4cm;3cm;3cm;3cm;3cm;2cm" 'Spaltenbreite in cm
Me.ListBox1.Clear
With Worksheets("Arbeitszeiten")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
Me.ListBox1.AddItem .Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(i, 3).Text
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(i, 4).Text
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = .Cells(i, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = .Cells(i, 6)
Next i
End With
With Worksheets("Mitarbeiter")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Worksheets("Arbeitszeiten") _
.Columns(1), .Cells(i, 1)) = 0 Then
Me.ListBox1.AddItem .Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(i, 4).Text
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = .Cells(i, 5).Text
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = .Cells(i, 6)
End If
Next i
End With
End Sub
Die Referenzierung von Cells in deinem Code ist falsch.
Wenn das Tabellenblatt in einer With / End With "Klammer" angeführt ist, dann werden die Range-Objekte innerhalb des With / End With auf das im With angegebene Tabellenblatt referenziert indem vor dem Range-Objekt ein Punkt geschrieben wird.
Gruß Werner

Betrifft: AW: Tabellenblätter vergleichen
von: 1712651.html
Geschrieben am: 12.09.2019 11:13:12
funktioniert perfekt, vielen Dank!

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: 1712655.html
Geschrieben am: 12.09.2019 11:29:34

Excel-Beispiele zum Thema "Tabellenblätter vergleichen"
Benennen von Tabellenblättern mit Monatsnamen Suchbegriff über mehrere Tabellenblätter suchen.
Tabellenblätter benennen Tabellenblätter in umgekehrter Reihenfolge drucken
Druck aus mehreren Tabellenblättern auf eine Druckseite Letztes Speicherdatum in die Fußzeile aller Tabellenblätter
Ausgewählte Tabellenblätter als eigene Arbeitsmappen speichern Den selben Bereichsnamen in mehreren Tabellenblättern
Prüfung, welche Tabellenblätter aus einer Liste vorhanden sind SUMMEWENN-Funktion über mehrere Tabellenblätter
Bewerten Sie hier bitte das Excel-Portal