AW: Makro vereinfachen
30.04.2013 03:18:54
fcs
Hallo Ulf,
man kann für die Hauptaktionen (Blätter ein-/ausblenden, Zeilen ein-/ausblenden) Unterprozeduren Schreiben, an die der Visible-Status bzw. die auszublenden Zeilenbereich als Parameter ünergeben werden.
Sieht dann z.B. wie folgt aus.
Gruß
Franz
Private Sub Sheets_Visible(Optional LE1 As Boolean, Optional LE2 As Boolean, _
Optional LE3 As Boolean, Optional LE4 As Boolean, Optional Combiner As Boolean)
'Ein-/Ausblenden der Tabellenblätter.
'Parameter muss nur für die einzublendenden Blätter mit Wert True übergeben werden.
Sheets("P&Xtalk_LE1").Visible = LE1
Sheets("P&Xtalk_LE2").Visible = LE2
Sheets("P&Xtalk_LE3").Visible = LE3
Sheets("P&Xtalk_LE4").Visible = LE4
Sheets("Combiner").Visible = Combiner
End Sub
Private Sub SerNr_RowsHide(arrRows As Variant)
'Zeilen ausblenden in Blatt "Ser.Nr."
'in arrRows wird ein Array mit den auszublendenden Zeilennummern übergeben
'wird Array("0") als Wert für arrRows übergeben, dann werden alle Zeilen eingeblendet.
Dim intI As Integer
With Sheets("Ser.Nr.")
.Rows.Hidden = False
If arrRows(LBound(arrRows)) "0" Then
For intI = LBound(arrRows) To UBound(arrRows)
.Rows(arrRows(intI)).Hidden = True
Next intI
End If
End With
End Sub
Private Sub Ein_Aublenden(strOption As String)
'Tabellenblätter und Zeilen im Blatt "Ser.Nr." werden ein- bzw. ausgeblendet.
Application.ScreenUpdating = False
Select Case strOption
Case "FL010C"
Call Sheets_Visible(LE1:=True)
Call SerNr_RowsHide(Array("9:10", "16:18", "21:100", "131:220"))
Case "FL020C"
Call Sheets_Visible(LE1:=True, LE2:=True, Combiner:=True)
Call SerNr_RowsHide(Array("9:10", "16:16", "23:38", "41:100", "161:220"))
Case "FLx50C"
Call Sheets_Visible(LE1:=True)
Call SerNr_RowsHide(Array("9:10", "16:18", "21:100", "119:220"))
Case "FLx75C"
Call Sheets_Visible(LE1:=True)
Call SerNr_RowsHide(Array("9:10", "16:18", "21:100", "125:220"))
Case Else
MsgBox "Für die Option " & strOption & " wurde noch keine Case-Anweisung definiert!", _
vbInformation + vbOKOnly, "Makro- Ein_Ausblenden"
End Select
Application.ScreenUpdating = True
End Sub
Private Sub OptionButton8_Change()
'FLx50C
Call Ein_Aublenden(strOption:="FLx50C")
End Sub
Private Sub OptionButton9_Change()
'FLx75C
Call Ein_Aublenden(strOption:="FLx75C")
End Sub
Private Sub OptionButton10_Change()
'FL010C
Call Ein_Aublenden(strOption:="FL010C")
End Sub
Private Sub OptionButton11_Change()
'FL020C
Call Ein_Aublenden(strOption:="FL020C")
End Sub