du verwendest immer ActiveSheet - der Code bezieht sich also tatsächlich immer auf das Tabellenblatt "Einzelwerte". Der einfachste Weg - übergib an die Unterprozeduren noch das jeweilige Tabellenblatt und beziehe dich dann auf dieses Tabellenblatt.
Du kannst alle Unterprozeduren in das selbe Modul schreiben, da die Codezeilen eine bestimmte Anzahl nicht überschreiten (es müssten schon seeeeehr viel mehr Zeilen sein, bevor du mehrere Module verwenden musst).
Sub Start()
Dim lngLetzte As Long
Dim lngZeile As Long
If ThisWorkbook.Sheets("Einzelwerte").FilterMode Then ThisWorkbook.Sheets("Einzelwerte").ShowAllData
If ThisWorkbook.Sheets("KST-Matrix").FilterMode Then ThisWorkbook.Sheets("KST-Matrix").ShowAllData
With Worksheets("Diesel International DEU")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) + 1
End With
With Worksheets("Einzelwerte")
For lngZeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) To 2 Step -1
If .Cells(lngZeile, 4) = "Hochleistungs-Diesel" And .Cells(lngZeile, 3) = "Deutschland" Or .Cells(lngZeile, 4) = "Diesel" And .Cells(lngZeile, 3) = "Deutschland" Then
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 22)).Cut Worksheets("Diesel International DEU").Cells(lngLetzte, 1)
.Rows(lngZeile).Delete
lngLetzte = lngLetzte + 1
End If
Next lngZeile
End With
With Worksheets("Diesel International Ausland")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) + 1
End With
With Worksheets("Einzelwerte")
For lngZeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) To 2 Step -1
If .Cells(lngZeile, 4) = "Hochleistungs-Diesel" And .Cells(lngZeile, 3) <> "Deutschland" Or .Cells(lngZeile, 4) = "Diesel" And .Cells(lngZeile, 3) <> "Deutschland" Then
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 22)).Cut Worksheets("Diesel International Ausland").Cells(lngLetzte, 1)
.Rows(lngZeile).Delete
lngLetzte = lngLetzte + 1
End If
Next lngZeile
End With
With Worksheets("Andere Waren BRD")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) + 1
End With
With Worksheets("Einzelwerte")
For lngZeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) To 2 Step -1
If .Cells(lngZeile, 4) <> "Hochleistungs-Diesel" And .Cells(lngZeile, 3) = "Deutschland" Or .Cells(lngZeile, 4) <> "Diesel" And .Cells(lngZeile, 3) = "Deutschland" Then
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 22)).Cut Worksheets("Andere Waren BRD").Cells(lngLetzte, 1)
.Rows(lngZeile).Delete
lngLetzte = lngLetzte + 1
End If
Next lngZeile
End With
With Worksheets("Andere Waren International")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 4)), .Cells(.Rows.Count, 4).End(xlUp).Row, .Rows.Count) + 1
End With
With Worksheets("Einzelwerte")
For lngZeile = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count) To 2 Step -1
If .Cells(lngZeile, 4) <> "Hochleistungs-Diesel" And .Cells(lngZeile, 3) <> "Deutschland" Or .Cells(lngZeile, 4) <> "Diesel" And .Cells(lngZeile, 3) <> "Deutschland" Then
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 22)).Cut Worksheets("Andere Waren International").Cells(lngLetzte, 1)
.Rows(lngZeile).Delete
lngLetzte = lngLetzte + 1
End If
Next lngZeile
End With
End Sub
Sub x(wksTabelle As Worksheet)
With wksTabelle.Range("A3:M" & wksTabelle.Range("A200").End(xlUp).Row)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With
End Sub
Sub Summe(wksTabelle As Worksheet)
Dim Loletzte As Long
With wksTabelle
MsgBox .Name
If .FilterMode Then .ShowAllData
Loletzte = .Cells(Rows.Count, 4).End(xlUp).Row + 2
.Cells(Loletzte, 1) = "Summe"
With .Cells(Loletzte, 6)
.FormulaLocal = "=Teilergebnis(9;F4:F" & .Row - 1 & ")"
.NumberFormat = "#,###.#0 €"
End With
With .Cells(Loletzte, 7)
.FormulaLocal = "=Teilergebnis(9;G4:G" & .Row - 1 & ")"
.NumberFormat = "#,###.#0 €"
End With
With .Cells(Loletzte, 9)
.FormulaLocal = "=Teilergebnis(9;I4:I" & .Row - 1 & ")"
.NumberFormat = "#,###.#0 €"
End With
With Union(.Cells(Loletzte, 1), .Cells(Loletzte, 6), .Cells(Loletzte, 7), .Cells(Loletzte, 9))
.Font.Bold = True
.Font.Name = "calibri"
.Font.Size = 11
End With
End With
End Sub
Sub Druckbereich(wksTabelle As Worksheet)
Dim Ende As Integer
With wksTabelle
Ende = .Cells(.Rows.Count, 1).End(xlUp).Row
With .PageSetup
.PrintArea = "$A$1:$O$" & Ende
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End With
End Sub
Den Codeteil für das Einblenden aller gefilterten Zeilen habe ich geändert - es geht auch ohne On Error Resume Next.
Wenn nur die Arbeitsmappe offen ist in der du den Code ausführst, kannst du noch ThisWorkbook weglassen.