ich habe folgendes Problem:
Die OnAction Eigenschaft wird mehrfach bzw. für alle CmdButtons ausgeführt. Diese sind in einer PopUpListe zusammengefasst. Siehe Code.
Ich möchte jedoch, dass nur die OnAction Eigenschaft des eben gedrückten Buttons auf die zugehörige Prozedur verweist.
Sprich es soll nur die Prozedur ausgeführt werden, auf dessen Button gedrückt wurde. Nicht alle!!
Hier die Symbolleiste mit meinen Buttons:
Private Sub Workbook_Open()
Dim symbL As CommandBar, Param As CommandBarControl, Button As CommandBarButton
Dim Button2 As CommandBarButton, Button3 As CommandBarButton, Button4 As CommandBarButton
On Error Resume Next
Set symb = Application.CommandBars.Add("Symbolleiste", Position:=msoBarTop, Temporary:=True)
With symb
.Left = 0
.Visible = True
End With
Set Param = Application.CommandBars("Symbolleiste").Controls.Add(Type:=msoControlPopup)
With Param
.Caption = "Ansicht"
.TooltipText = "Ansicht auswählen"
.Width = 60
.Height = 30
End With
Set Button = Param.Controls.Add
With Button
.BeginGroup = True
.Caption = "EK-1-S"
.Style = msoButtonIconAndCaption
.TooltipText = "EK-1-S anzeigen"
.OnAction = "!Tabelle10.FilterEK1S"
End With
Set Button2 = Param.Controls.Add
With Button2
.BeginGroup = True
.Caption = "Umbaubeauftragte"
.Style = msoButtonIconAndCaption
.TooltipText = "Umbaubeauftragte anzeigen"
.OnAction = "!Tabelle10.FilterUmbauBA"
End With
Set Button3 = Param.Controls.Add
With Button3
.BeginGroup = True
.Caption = "Personalreferent"
.Style = msoButtonIconAndCaption
.TooltipText = "Personalreferent anzeigen"
.OnAction = "!Tabelle10.FilterPersRef"
End With
Set Button4 = symbL.Controls.Add
With Button4
.BeginGroup = True
.Caption = "Alle"
.Style = msoButtonIconAndCaption
.TooltipText = "Alle anzeigen"
.OnAction = "!Tabelle10.FilterCancle"
End With
End Sub
Und hier die Prozeduren:Sub FilterEK1S()
Dim Datenblatt As Worksheet, StartRow As Integer, StartCol As Integer, ColEnd As Long, RowEnd As Long, Area As Range, rngHidden As Range, i As Long
Set Datenblatt = Worksheets("Vakanzenliste")
With Datenblatt
.Cells.EntireColumn.Hidden = False
StartRow = 3
StartCol = 1
ColEnd = .Cells(StartRow, Columns.Count).End(xlToLeft).Column
Set Area = .Range(.Cells(StartRow, StartCol), .Cells(StartRow, ColEnd))
For Each cell In Area
If Not InStr(cell, "g") Then
If rngHidden Is Nothing Then
Set rngHidden = cell
Else
Set rngHidden = Union(rngHidden, cell)
End If
End If
Next
End With
If Not rngHidden Is Nothing Then rngHidden.EntireColumn.Hidden = True
End Sub
Private Sub FilterPersRef()
Dim Datenblatt As Worksheet, StartRow As Integer, StartCol As Integer, ColEnd As Long, RowEnd _
As Long, Area As Range, rngHidden As Range, i As Long
Set Datenblatt = Worksheets("Vakanzenliste")
With Datenblatt
.Cells.EntireColumn.Hidden = False
StartRow = 3
StartCol = 1
ColEnd = .Cells(StartRow, Columns.Count).End(xlToLeft).Column
Set Area = .Range(.Cells(StartRow, StartCol), .Cells(StartRow, ColEnd))
For Each cell In Area
If Not InStr(cell, "p") Then
If rngHidden Is Nothing Then
Set rngHidden = cell
Else
Set rngHidden = Union(rngHidden, cell)
End If
End If
Next
End With
If Not rngHidden Is Nothing Then rngHidden.EntireColumn.Hidden = True
End Sub
Private Sub FilterUmbauBA()
Dim Datenblatt As Worksheet, StartRow As Integer, StartCol As Integer, ColEnd As Long, RowEnd _
As Long, Area As Range, rngHidden As Range, i As Long
Set Datenblatt = Worksheets("Vakanzenliste")
With Datenblatt
.Cells.EntireColumn.Hidden = False
StartRow = 3
StartCol = 1
ColEnd = .Cells(StartRow, Columns.Count).End(xlToLeft).Column
Set Area = .Range(.Cells(StartRow, StartCol), .Cells(StartRow, ColEnd))
For Each cell In Area
If Not InStr(cell, "r") Then
If rngHidden Is Nothing Then
Set rngHidden = cell
Else
Set rngHidden = Union(rngHidden, cell)
End If
End If
Next
End With
If Not rngHidden Is Nothing Then rngHidden.EntireColumn.Hidden = True
End Sub
Private Sub FilterCancle()
Worksheets("Vakanzenliste").Cells.EntireColumn.Hidden = False
End Sub
Vielen Dank für jegliche HilfeLG
Adrian