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
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