Visual Basic Tabellenblätter vergleichen mit Kombinationsfeld

  • Excel

    Visual Basic Tabellenblätter vergleichen mit Kombinationsfeld

    Hallo zusammen,

    ich möchte gerne folgende Funktionen mit Visual Basic realisieren:
    meine Tabellenblätter sollen automatisch umbenannt werden (z.B. Tabelle12)
    ich habe ein Tabellenblatt (Tabelle14) auf welchem ich die Änderungen zwischen zwei Tabellenblättern darstellen möchte.
    Auf dem Tabellenblatt (Tabelle14) sind zwei Kombinationsfelder anhand derer die beiden zu vergleichenden Tabellenblätter ausgewählt werden können.
    Sowie ein Button dem das Makro "Modul1" zugewiesen ist.
    Wenn ich auf den Button klicke, sollen die ausgewählten Tabellenblätter miteinander verglichen werden und die Änderungen auf dem Tabellenblatt 14 dargestellt werden.
    Aktuell funktionieren die Funktionen/der Abgleich zwischen den festgelegten Tabellenblättern 12 und 13 wie gewünscht.

    Meine Frage ist nun: Wie bekomme ich es hin das im "Modul1" nicht auf die festgelegten Tabellenblätter 12 und 13 zugegriffen wird sondern auf die Tabellenblätter welche in den Kombinationsfeldern ausgewählt wurden.

    Danke für eure Unterstützung!


    Der Code für die einzelnen Tabellenblätter (z.B. Tabelle12) lautet:

    Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$C$9" Then
    Name = Range("C9")
    End If
    End Sub


    Der Code für Tabelle 14 lautet:

    Private Sub CommandButton1_Click()

    End Sub

    Private Sub ComboBox1_GotFocus()
    Dim wks As Worksheet
    With ComboBox1
    .Clear
    For Each wks In Worksheets
    Select Case wks.Name
    Case Tabelle12.Name, Tabelle13.Name
    .AddItem wks.Name
    Case Else
    End Select
    Next wks
    End With
    End Sub

    Private Sub ComboBox2_GotFocus()
    Dim wks As Worksheet
    With ComboBox2
    .Clear
    For Each wks In Worksheets
    Select Case wks.Name
    Case Tabelle12.Name, Tabelle13.Name, Tabelle15.Name
    .AddItem wks.Name
    Case Else
    End Select
    Next wks
    End With
    End Sub

    Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Address = "$C$8" Then
    Name = Range("C8")
    End If
    End Sub


    Der Code für Modul1 lautet:
    Sub Abgleich()

    Dim treffer As Boolean
    Dim gesamt_tab12 As String
    Dim gesamt_tab13 As String
    Dim a As Integer
    Dim b As Integer

    treffer = False

    For a = 16 To Tabelle12.Cells(Rows.Count, 1).End(xlUp).Row
    'wenn noch mehr Spalten geprüft werden sollen einfach hier erweitern
    gesamt_tab12 = Tabelle12.Cells(a, 1) & " " & Tabelle12.Cells(a, 2) & " " & Tabelle12.Cells(a, 3) & " " & Tabelle12.Cells(a, 4) & " " & Tabelle12.Cells(a, 5) & " " & Tabelle12.Cells(a, 6) & " " & Tabelle12.Cells(a, 7) & " " & Tabelle12.Cells(a, 8) & " " & Tabelle12.Cells(a, 9) & " " & Tabelle12.Cells(a, 10) & " " & Tabelle12.Cells(a, 11) & " " & Tabelle12.Cells(a, 12) & " " & Tabelle12.Cells(a, 13)
    For b = 16 To Tabelle13.Cells(Rows.Count, 1).End(xlUp).Row
    'wenn noch mehr Spalten geprüft werden sollen einfach hier erweitern
    gesamt_tab13 = Tabelle13.Cells(a, 1) & " " & Tabelle13.Cells(a, 2) & " " & Tabelle13.Cells(a, 3) & " " & Tabelle13.Cells(a, 4) & " " & Tabelle13.Cells(a, 5) & " " & Tabelle13.Cells(a, 6) & " " & Tabelle13.Cells(a, 7) & " " & Tabelle13.Cells(a, 8) & " " & Tabelle13.Cells(a, 9) & " " & Tabelle13.Cells(a, 10) & " " & Tabelle13.Cells(a, 11) & " " & Tabelle13.Cells(a, 12) & " " & Tabelle13.Cells(a, 13)
    If gesamt_tab12 = gesamt_tab13 Then
    treffer = True
    Exit For
    End If
    Next b

    If treffer = False Then
    zeile = (Tabelle14.Cells(Rows.Count, 1).End(xlUp).Row) + 1
    Tabelle14.Cells(zeile, 1) = Tabelle13.Cells(a, 1)
    Tabelle14.Cells(zeile, 2) = Tabelle13.Cells(a, 2)
    Tabelle14.Cells(zeile, 3) = Tabelle13.Cells(a, 3)
    Tabelle14.Cells(zeile, 4) = Tabelle13.Cells(a, 4)
    Tabelle14.Cells(zeile, 5) = Tabelle13.Cells(a, 5)
    Tabelle14.Cells(zeile, 6) = Tabelle13.Cells(a, 6)
    Tabelle14.Cells(zeile, 7) = Tabelle13.Cells(a, 7)
    Tabelle14.Cells(zeile, 8) = Tabelle13.Cells(a, 8)
    Tabelle14.Cells(zeile, 9) = Tabelle13.Cells(a, 9)
    Tabelle14.Cells(zeile, 10) = Tabelle13.Cells(a, 10)
    Tabelle14.Cells(zeile, 11) = Tabelle13.Cells(a, 11)
    Tabelle14.Cells(zeile, 12) = Tabelle13.Cells(a, 12)
    Tabelle14.Cells(zeile, 13) = Tabelle13.Cells(a, 13)
    zeile = (Tabelle14.Cells(Rows.Count, 1).End(xlUp).Row) + 1
    Tabelle14.Cells(zeile, 1) = Tabelle12.Cells(a, 1)
    Tabelle14.Cells(zeile, 2) = Tabelle12.Cells(a, 2)
    Tabelle14.Cells(zeile, 3) = Tabelle12.Cells(a, 3)
    Tabelle14.Cells(zeile, 4) = Tabelle12.Cells(a, 4)
    Tabelle14.Cells(zeile, 5) = Tabelle12.Cells(a, 5)
    Tabelle14.Cells(zeile, 6) = Tabelle12.Cells(a, 6)
    Tabelle14.Cells(zeile, 7) = Tabelle12.Cells(a, 7)
    Tabelle14.Cells(zeile, 8) = Tabelle12.Cells(a, 8)
    Tabelle14.Cells(zeile, 9) = Tabelle12.Cells(a, 9)
    Tabelle14.Cells(zeile, 10) = Tabelle12.Cells(a, 10)
    Tabelle14.Cells(zeile, 11) = Tabelle12.Cells(a, 11)
    Tabelle14.Cells(zeile, 12) = Tabelle12.Cells(a, 12)
    Tabelle14.Cells(zeile, 13) = Tabelle12.Cells(a, 13)
    'weitere Spalten kommen dann entsprechend hier hin

    End If
    treffer = False

    Next a

    End Sub