Ich erzeuge in einem Klssenmodul 20 ControlButton in einer Symbolleiste. Beim 20. Button, tritt das Klick- Ereignis immer doppelt auf. Hat jemand eine Ahnung, woran das liegen könnte?
Hier der Code:
''Standardmodul----------------------------------------------
Option Explicit
Option Base 1
Public Const b As Byte = 20
Public arrButton(b) As New clsMenu
Public Const CBNAME As String = "Test_Menu"
Private M As clsMenu
Sub MenuLeisteInit()
Dim objCB As CommandBar
On Error Resume Next
CommandBars(CBNAME).Delete
On Error GoTo 0
Set objCB = CommandBars.Add(Name:=CBNAME)
Set M = New clsMenu
M.MenuLeiste
With objCB
.Position = msoBarTop
.Visible = True
.Protection = 1 + 8
End With
End Sub
Sub setten()
Dim i As Byte
For i = 1 To b
Set arrButton(i).cmdButton = CommandBars(CBNAME).controls(i)
Next
End Sub
''Klassenmodul clsMenu-----------------------------------
Option Explicit
Public WithEvents cmdButton As CommandBarButton
Sub MenuLeiste()
Dim x As Byte
With CommandBars(CBNAME)
For x = 1 To b
Set cmdButton = .controls.Add(Type:=msoControlButton)
With cmdButton
.Style = msoButtonCaption
.Caption = x
.TooltipText = "Schalter " & x
.Width = 20
.Tag = x
.BeginGroup = True
.Enabled = True
End With
Next
End With
Call setten
End Sub
Private Sub cmdButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
If Ctrl.State = msoButtonDown Then
Ctrl.State = msoButtonUp
Else
Ctrl.State = msoButtonDown
End If
MsgBox Ctrl.TooltipText
End Sub