Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1044to1048
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Trennlinien in selbsterstellter Symbolleiste

Trennlinien in selbsterstellter Symbolleiste
04.02.2009 09:29:00
Florian
Hallo!
Ich hab mir einen Code zum Erstellen einer eigenen Symbolleiste aus dem Forum kopiert!
Ich hab jetzt nur noch das Problem, dass ich Probleme mit den Trennlinien habe.
In der Zeile
"Set CBC = CB.Controls.Add(ID:=128) 'Rückgängig"
tritt ein Fehler auf, d. h. der Code wird ab hier nicht mehr ausgeführt. Was hab ich hier falsch gemacht?
Ich kenn mich hier zu wenig aus, mein Latein ist hier am Ende!
Hier ist mein Versuch:

Private Sub Workbook_Open()
Dim CB As CommandBar
Dim CBC As CommandBarButton
Dim I As Integer
On Error Resume Next
Set CB = Application.CommandBars.Add(Name:="Menüleiste Durchschreibe", temporary:=True,  _
Position:=msoBarTop)
On Error GoTo 0
If Application.CommandBars("Menüleiste Durchschreibe").Visible = False Then
CB.Visible = True
'       Code von jinx zur Position
'       RowIndex 3 --> vor Standard-Symbolleiste
'       Rowindex 4 --> vor Formatsymbolleiste
CB.RowIndex = Application.CommandBars("Standard").RowIndex
'       Left = 0 ---> wird vor existierende Symbolleiste eingefügt
'       Left > 0 --> Wird hinter Symbolleiste angefügt
CB.Left = 0
'Application.CommandBars("Formatting").Visible = False
'Application.CommandBars("Standard").Visible = False
Set CBC = CB.Controls.Add(ID:=3) 'Speichern
Set CBC = CB.Controls.Add(ID:=4) 'Druckfenster
CBC.BeginGroup = True
Set CBC = CB.Controls.Add(ID:=109) ' Seitenansicht
Set CBC = CB.Controls.Add(ID:=19) ' Kopieren
CBC.BeginGroup = True
CB.Controls.Add ID:=6002 ' Einfügen
Set CBC = CB.Controls.Add(ID:=128) 'Rückgängig     
CBC.BeginGroup = True
Set CBC = CB.Controls.Add(ID:=37) 'Wiederholen
For I = 1 To 8
Set CBC = CB.Controls.Add(Type:=msoControlButton)
With CBC
Select Case I
Case 1
ThisWorkbook.Worksheets("Icons").Shapes("Bild 1").Copy
.Caption = "Format: Auswertung"
.OnAction = "Format_Auswertung"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 2
ThisWorkbook.Worksheets("Icons").Shapes("Bild 2").Copy
.Caption = "Fußzeile"
.OnAction = "Fußzeile_einfügen"
.Style = msoButtonIcon
.PasteFace
Case 3
ThisWorkbook.Worksheets("Icons").Shapes("Bild 3").Copy
.Caption = "CSV Speichern"
.OnAction = "CSV_als_XLS_Speichern"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 4
ThisWorkbook.Worksheets("Icons").Shapes("Bild 4").Copy
.Caption = "Querformat"
.OnAction = "Querformat"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 5
ThisWorkbook.Worksheets("Icons").Shapes("Bild 5").Copy
.Caption = "Seitenrand vergrößern"
.OnAction = "Seitenrand_vergroessern"
.Style = msoButtonIcon
.PasteFace
Case 6
ThisWorkbook.Worksheets("Icons").Shapes("Bild 6").Copy
.Caption = "Automatischer Seitenumbruch"
.OnAction = "Automatischer_Seitenumbruch"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 7
ThisWorkbook.Worksheets("Icons").Shapes("Bild 7").Copy
.Caption = "Als Datum"
.OnAction = "Als_DATUM_formatieren"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 8
ThisWorkbook.Worksheets("Icons").Shapes("Bild 8").Copy
.Caption = "Als TEXT/ZAHL formatieren"
.OnAction = "Als_TEXT_formatieren"
.Style = msoButtonIcon
.PasteFace
End Select
End With
Next I
End If
End Sub


Bitte um Eure Hilfe!
Gruß
Florian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trennlinien in selbsterstellter Symbolleiste
04.02.2009 10:21:00
Luschi
Hallo Florian,
das funktioniert so:
On Error Resume Next
Set CBC = CB.Controls.Add(Type:=msoControlSplitDropdown, ID:=128) 'Rückgängig
On Error GoTo 0
Wie Du siehst, hat das Rückgängig-CommandbarControl einen andere Typ und den sollte man mit angeben (in der Vba-Hilfe ist dieser Typ nicht erwähnt!).
Das die Fehlerprüfung abgeschalten werden muß, liegt daran, daß in den integrierten Symbolleisten
die ID 128 3-mal vorkommt . Das Interessante daran ist aber, das zuerst das Steuerelement in der Symbolleiste ertstellt wird und dann die Fehlermeldung kommt; deshalb kann man diese Fehlermeldung abschalten.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Trennlinien in selbsterstellter Symbolleiste
04.02.2009 13:57:44
Florian
Halllo!
Vielen Dank für die schnelle Hilfe! Da wär ich ja nie drauf gekommen!
Ich hab jetzt lediglich noch ein kleines Problem: Wie bekommen ich denn jetzt vor dem Icon "rückgängig" einen Trenntrich rein?
Mein Code sieht mittlerweile so aus und funktioniert einwandfrei (bis auf den Trennstrich):

Private Sub Workbook_Open()
Dim CB As CommandBar
Dim CBC As CommandBarButton
Dim I As Integer
On Error Resume Next
Set CB = Application.CommandBars.Add(Name:="Menüleiste Durchschreibe", temporary:=True, _
Position:=msoBarTop)
On Error GoTo 0
If Application.CommandBars("Menüleiste Durchschreibe").Visible = False Then
CB.Visible = True
'       Code von jinx zur Position
'       RowIndex 3 --> vor Standard-Symbolleiste
'       Rowindex 4 --> vor Formatsymbolleiste
CB.RowIndex = Application.CommandBars("Standard").RowIndex
'       Left = 0 ---> wird vor existierende Symbolleiste eingefügt
'       Left > 0 --> Wird hinter Symbolleiste angefügt
CB.Left = 0
'Application.CommandBars("Formatting").Visible = False
'Application.CommandBars("Standard").Visible = False
Set CBC = CB.Controls.Add(ID:=3) 'Speichern
Set CBC = CB.Controls.Add(ID:=4) 'Druckfenster
CBC.BeginGroup = True
Set CBC = CB.Controls.Add(ID:=109) ' Seitenansicht
Set CBC = CB.Controls.Add(ID:=19) ' Kopieren
CBC.BeginGroup = True
CB.Controls.Add ID:=6002 ' Einfügen
On Error Resume Next
Set CBC = CB.Controls.Add(Type:=msoControlSplitDropdown, ID:=128) 'Rückgängig
CBC.BeginGroup = True
On Error GoTo 0
Set CBC = CB.Controls.Add(ID:=37) 'Wiederholen
For I = 1 To 8
Set CBC = CB.Controls.Add(Type:=msoControlButton)
With CBC
Select Case I
Case 1
ThisWorkbook.Worksheets("Icons").Shapes("Bild 1").Copy
.Caption = "Format: Auswertung"
.OnAction = "Format_Auswertung"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 2
ThisWorkbook.Worksheets("Icons").Shapes("Bild 2").Copy
.Caption = "Fußzeile"
.OnAction = "Fußzeile_einfügen"
.Style = msoButtonIcon
.PasteFace
Case 3
ThisWorkbook.Worksheets("Icons").Shapes("Bild 3").Copy
.Caption = "CSV Speichern"
.OnAction = "CSV_als_XLS_Speichern"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 4
ThisWorkbook.Worksheets("Icons").Shapes("Bild 4").Copy
.Caption = "Querformat"
.OnAction = "Querformat"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 5
ThisWorkbook.Worksheets("Icons").Shapes("Bild 5").Copy
.Caption = "Seitenrand vergrößern"
.OnAction = "Seitenrand_vergroessern"
.Style = msoButtonIcon
.PasteFace
Case 6
ThisWorkbook.Worksheets("Icons").Shapes("Bild 6").Copy
.Caption = "Automatischer Seitenumbruch"
.OnAction = "Automatischer_Seitenumbruch"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 7
ThisWorkbook.Worksheets("Icons").Shapes("Bild 7").Copy
.Caption = "Als Datum"
.OnAction = "Als_DATUM_formatieren"
.Style = msoButtonIcon
.PasteFace
.BeginGroup = True
Case 8
ThisWorkbook.Worksheets("Icons").Shapes("Bild 8").Copy
.Caption = "Als TEXT/ZAHL formatieren"
.OnAction = "Als_TEXT_formatieren"
.Style = msoButtonIcon
.PasteFace
End Select
End With
Next I
End If
End Sub


Gruß und Danke nochmals!
Florian

Anzeige
AW: Trennlinien in selbsterstellter Symbolleiste
04.02.2009 16:14:53
Luschi
Hallo Florian,
mache es so:
Dim CBC As CommandBarControl
Set CBC = CB.Controls.Add(Type:=msoControlSplitDropdown, ID:=128) 'Rückgängig
CBC.BeginGroup = True
Dann kannst Du auf die On Error - Anweisungen verzichten (Tipp von Nepumuk).
Gruß von Luschi
aus klein-Paris
AW: Trennlinien in selbsterstellter Symbolleiste
04.02.2009 10:31:00
Nepumuk
Hallo Florian,
wie Luschi schon schrieb, liegt das daran, dass "Rückgängig machen" kein Commandbarbutton ist. Du aber die Objektvariable CBC als Commandbarbutton deklariert hast. Ändere die Deklaration einfach so:
Dim CBC As CommandBarControl
Damit passt es wieder.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige