Microsoft Excel

Herbers Excel/VBA-Archiv

CommandBars.FindControl | Herbers Excel-Forum


Betrifft: CommandBars.FindControl von: Steffen
Geschrieben am: 14.11.2009 21:42:28

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


  

Betrifft: AW: CommandBars.FindControl von: Nepumuk
Geschrieben am: 14.11.2009 22:02:13

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


  

Betrifft: Danke Nepumuk.. von: Steffen
Geschrieben am: 14.11.2009 22:10:16

..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



  

Betrifft: Endlösung von: Steffen
Geschrieben am: 14.11.2009 23:44:28

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