HERBERS Excel-Forum - das Archiv

Thema: CommandBars.FindControl | Herbers Excel-Forum

CommandBars.FindControl
Steffen

Hallo Zusammen,
Ich möchte in einem Programm Standard Befehle(Speichern,Füllfarbe,Schriftgrad usw.) in der Menüleiste festlegen .
mit folgenden Script hab ich es versucht erst zuprüfen ob erschon vorhanden ist u wenn nicht soll er eingefügt werden.
Sub steuerl()
If Not CommandBars(1).FindControl(ID:=1728).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=1728, Before:=10
End If
If Not CommandBars(1).FindControl(ID:=1731).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=1731, Before:=10
End If
If Not CommandBars(1).FindControl(ID:=401).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=401, Before:=10
End If
If Not CommandBars(1).FindControl(ID:=3).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=113, Before:=10
End If
If Not CommandBars(1).FindControl(ID:=1691).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=1691, Before:=9
End If
If Not CommandBars(1).FindControl(ID:=401).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=401, Before:=10
End If
If Not CommandBars(1).FindControl(ID:=3).Enabled Then
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:= _
msoControlButton, ID:=3, Before:=10
End If
End Sub

die bringt mir aber ein Laufzeitfehler.
Ich vermute mal das es an der Eigenschaft Enabled liegt.
Viele Grüße Steffen

AW: CommandBars.FindControl
Nepumuk

Hallo,
Enabled gibt Wahr oder Falsch zurück. Das kannst du nicht mit Not vergleichen. Also ungefähr so:
Sub steuerl()
    
    Dim objCommandBarControl As CommandBarControl
    
    Set objCommandBarControl = CommandBars(1).FindControl(ID:=1728)
    If objCommandBarControl Is Nothing Then _
        CommandBars(1).Controls.Add ID:=1728, Before:=10
    
End Sub

Für genauere Angabe hab ich momentan zu wenig Blut im Alkohol. Ach ja, das: Type:=msoControlButton solltest du keinesfalls machen, wenn du nicht 100% sicher bis das es tatsächlich ein Button ist. Außerdem macht es keinen Sinn, wenn du die ID angibst, die weiß selbst, welches Control sie benutzt.
Gruß
Nepumuk
Danke Nepumuk..
Steffen

..hab ich wieder was gelernt, werd das jetzt erstmal verdauen ;-)
Bin immer wieder beeindruckt wie kompetent hier in diesem Forum einem geholfen wird!
viele Grüße Steffen
Endlösung
Steffen

Ich hab es jetzt folgendermaßen gelöst:
Sub steuerl()
Dim i As Long, n As Long
Dim myCommandBar As CommandBar
Set myCommandBar = Application.CommandBars("Worksheet Menu Bar")
For i = 1 To 6
n = Choose(i, 1728, 1731, 401, 1691, 113, 3)
If CommandBars(1).FindControl(ID:=n) Is Nothing Then
CommandBars(1).Controls.Add ID:=n, Before:=myCommandBar.Controls.Count + 1
End If
Next
End Sub
Danke nochmals an Nepumuk
Viele Grüße Steffen