AW: Button_Click_Events
27.07.2020 08:20:05
fcs
Hallo SleepyHead,
die Möglichkeiten hängen jetzt vom gewählten Typ Button ab den du im Tabellenblatt verwendest.
Active-X-Steuerelement
...oder
Formularsteuerelement
Bei Active-X-Schaltfäche benötigst du für jede Schaltfläche ein Click-Event-Makro.
Du kannst hier aber für "neu" und "leere ausblenden" jeweils eine Unter-Sub anlegen, an die die Startzeile als Parameter übergeben wird.
Beispiel:
'Beispiel für Active-X-Steuerelemente
Private Sub CommandButton1_Click()
'Gruppe 1 neue Untergruppe
Call prcNeu(Startzeile:=2)
End Sub
Private Sub CommandButton2_Click()
'Gruppe 1 leere Untergruppen ausblenden
Call prcLeereAusblenden(Startzeile:=2)
End Sub
'Beispiel für Active-X-Steuerelemente
Private Sub CommandButton3_Click()
'Gruppe 1 neue Untergruppe
Call prcNeu(Startzeile:=103)
End Sub
Private Sub CommandButton4_Click()
'Gruppe 1 leere Untergruppen ausblenden
Call prcLeereAusblenden(Startzeile:=103)
End Sub
Private Sub prcNeu(Startzeile As Long)
Dim Zeile_1 As Long, Zeile_L As Long
Zeile_1 = Startzeile
Zeile_L = Startzeile + 99
With Me
Zeile_1 = .Cells(Zeile_L + 1, 2).End(xlUp).Row
If Zeile_1 = Zeile_L Then
MsgBox "Alle Zeilen für Untergruppen sind belegt"
Else
If Zeile_1
Bei den Formular-Steuerelementen kannst du nach dem gleichen Schema arbeiten. Es gibt aber auch die möglichkeit, dass wenn aus der Position der linken oberen Ecke der Schaltflächen die Startzeile eindeutig ermittelt werden kann, alle Schaltflächen das gleiche Makro zugewiesen bekommen.
Beipiel:
'Code in einem allgemeinen Modul der Datei
'Beispiel bei Verwendung von Schaltflächen aus Formularsteuerelementen, die das gleiche Makro _
aufrufen sollen
'Die Position (linke obere Ecke der Schaltflächen wird zur Berechnung der Startzeile verwendet.
Sub prcSchaltflaecheNeu()
Dim wks As Worksheet
Dim objShape As Shape
Dim Startzeile As Long, Zeile_1 As Long, Zeile_L As Long
Set wks = ActiveSheet
Set objShape = wks.Shapes(Application.Caller)
Startzeile = objShape.TopLeftCell.Row
Zeile_1 = Startzeile
Zeile_L = Startzeile + 99
With wks
Do
Zeile_1 = Zeile_1 + 1
If Zeile_1 > Zeile_L Then Exit Do
If .Cells(Zeile_1, 2).Text = "" Then
.Range(.Rows(Startzeile), .Rows(Zeile_1)).Hidden = False
.Cells(Zeile_1, 2).Select
Exit Do
End If
Loop
End With
End Sub
Sub prcSchaltflaecheLeereAusblenden()
Dim wks As Worksheet
Dim objShape As Shape
Dim Startzeile As Long, Zeile_1 As Long, Zeile_L As Long
Set wks = ActiveSheet
Set objShape = wks.Shapes(Application.Caller)
Startzeile = objShape.TopLeftCell.Row
Zeile_1 = Startzeile
Zeile_L = Startzeile + 99
With wks
Do
Zeile_1 = Zeile_1 + 1
If Zeile_1 > Zeile_L Then Exit Do
If .Cells(Zeile_1, 2).Text = "" Then
.Range(.Rows(Zeile_1), .Rows(Zeile_L)).Hidden = True
Exit Do
End If
Loop
End With
End Sub
LG
Franz