AW: über Button
14.09.2011 12:29:04
fcs
Hallo Ulf,
wenn der Aufbau der Tabellenblätter identisch ist (oder hier ginge auch bis auf die Anzahl der Zeilen identisch ist), dann kann man alle Blätter auch mit einem Makro abarbeiten. D.h. du könntest in jedem Blatt einen Formlarbutton plazieren, der jeweils auf das Makro verweist.
Code - Beispiel:
Sub Druck()
'Makro für Button aus Formularelmenten
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
Select Case .Name
Case "Strahlweg 1", "Strahlweg 2", "Strahlweg 3", "Strahlweg 4"
If .AutoFilterMode = True Then
.AutoFilter.Range.AutoFilter field:=1, Criteria1:="X"
Else
With .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
.AutoFilter
.AutoFilter field:=1, Criteria1:="X"
End With
End If
.PrintOut Preview:=True
.ShowAllData
Case Else
.PrintOut Preview:=True
End Select
End With
End Sub
Das Makro für die Active-X-Buttons kannst du noch etwas vereinfachen. Für Tabellen-, Userform-, und das Arbeitsmappenmodul gibt es noch die Standard-Objekt-Variable "Me". Diese bezieht sich immer auf das Objekt in dem der Code steht. D.h. man muss nicht unbedingt eine Worksheet-Objektvariable deklarieren.
Private Sub CommandButton1_Click()
With Me
If .AutoFilterMode = True Then
.AutoFilter.Range.AutoFilter field:=1, Criteria1:="X"
Else
With .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
.AutoFilter
.AutoFilter field:=1, Criteria1:="X"
End With
End If
.PrintOut Preview:=True
.ShowAllData
End With
End Sub
Ansonsten solltest du verbundene Zellen möglichst vermeiden. Sie machen einem das Leben bei der Makro-Programmierungen unnötig schwer. Zumindest für die Zeilen 4 und 5 besteht keine Notendigkeit die Zellen in den Spaltentiteln vertikal zu verbinden.
Gruß
Franz