Herbers Excel-Forum - das Archiv

ComboBox in neuer Symbolleiste

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: ComboBox in neuer Symbolleiste
von: Alex
Geschrieben am: 19.09.2003 10:26:09
Hallo zusammen,
ich habe ein Problem in VBA, vielleicht kann mir jemand von euch helfen? Ich versuche eine Symbolleiste mit einer ComboBox zu erstellen und mit allen Blättern der aktiven Arbeitsmappe zu bestücken, die mit "data" beginnen. Beim anklicken soll das entsprechende Blatt angewählt werden. Außerdem hätte ich gerne, dass in der Symbolleiste der Titel "Zur Dateneingabe" erscheint. Dies kann ja auch Teil der comboboxitems sein, der einfach keinen weiteren Befehl aktiviert. Trotzdem weiß ich leider nicht genau, wie das geht. Hier mal mein Arbeitsansatz:

Symbolleiste und Combobox



Private Sub Workbook_Open()
Dim ws1 As Worksheet
Dim Symbolleiste As CommandBar
Dim Schaltflaeche1 As CommandBarButton
Dim Schaltflaeche2 As CommandBarComboBox
Call DeleteCmdBar
Set Symbolleiste = Application.CommandBars.Add(Name:="Navigation", _
temporary:=True)
With Symbolleiste
.Visible = True
.Top = 300
.Left = 300
End With
'Schaltfläche1: zurück zu Overview erstellen
Set Schaltflaeche1 = Symbolleiste.Controls.Add
With Schaltflaeche1
.FaceId = 41
.Caption = "Back to Overview"
.OnAction = "Schaltflaeche1Befehl"
End With
'Combobox 1 erstellen und laden
Set Schaltflaeche2 = Symbolleiste.Controls.Add(msoControlComboBox)
With Schaltflaeche2
.Caption = "Data Entry"
For Each ws1 In ActiveWorkbook.Worksheets
If Left(ws1.Name, 4) = "data" Then
.AddItem ws1.Name
End If
Next
.DropDownLines = 20
.DropDownWidth = 200
.OnAction = "Schaltflaeche2Befehl"
End With
End Sub



und die folgendes in Modul 9

Sub Schaltflaeche1Befehl()
Worksheets("Overview").Activate
End Sub


Sub Schaltflaeche2Befehl()

'hier wird ein Fehler angezeigt...

Worksheets(Schaltflaeche2.Value).Activate
End Sub


Sub DeleteCmdBar()
On Error Resume Next
Application.CommandBars("Navigation").Delete
On Error GoTo 0
End Sub


Vielen Dank für eure Hilfe
Alex
Bild

Betrifft: AW: ComboBox in neuer Symbolleiste
von: GerdW
Geschrieben am: 19.09.2003 10:32:04
Dein Code ist fehleranfällig aber so sollte zumindest die Auswahl
klappen:



Sub Schaltflaeche2Befehl()
Worksheets(Schaltflaeche2.Text).Activate
End Sub



Außerdem solltest du sicherstellen, dass die symbolleiste beim Mappenwechsel
nicht zur Verfügung steht, weil sie dort ja sinnlos ist.

Gerd
Bild

Betrifft: klappt leider noch nicht
von: Alex
Geschrieben am: 19.09.2003 10:43:36
danke für deine Antwort, leider funktioniert der Befehl aber nicht. Fehler: Objekt erforderlich
Bild

Betrifft: AW: klappt leider noch nicht
von: GerdW
Geschrieben am: 19.09.2003 10:48:43
Ja klar, die Variable Schaltflaeche2 ist ja in der anderen
Prozedur schon wieder nothing. Entweder deklarierst du
Schaltflaeche2 im Deklarationsteil(auf Modulebenen) oder du
sprichst das control über die Caption an.

Gerd
Bild

Betrifft: AW: klappt leider noch nicht
von: Alex
Geschrieben am: 19.09.2003 11:03:01
Sorry, bin mir nicht ganz sicher, was du da meinst (bin VBA Anfänger).
Soll ich das Dim Schaltflaeche2 in mein Modul 9 kopieren??? Und Caption hab ich bisher noch nicht verwendet. Ich bin mir auch nicht sicher, ob das .onaction eigentlich bedeutet, das ich einen Mausklick ausführe....
Bild

Betrifft: AW: klappt leider noch nicht
von: GerdW
Geschrieben am: 19.09.2003 11:13:00
Du schreibst:


Sub Schaltflaeche2Befehl()
Worksheets(Schaltflaeche2.Value).Activate
End Sub



Das control heißt aber nicht Schaltflaeche2 sondern irgendwas mit date entry.
Diesen Namen(bzw. caption) musst du benutzen und ggf. noch den Namen
der Symbolleiste voranstellen.

Gerd
Bild

Betrifft: AW: klappt leider noch nicht
von: Alex
Geschrieben am: 19.09.2003 11:31:58
Hallo Gerd und danke für die Geduld:
es klappt leider noch nicht. Ich sehe da auch folgendes Problem: bei der onaction Sache in "DieseArbeitsmappe" wird ja bei mir auf Modul 9 verwiesen. Allerding ist in Modul 9 ja noch keine Variable definiert (weder "Symbolleiste" noch "Schaltfläche"). D.h. Worksheets(Schaltflaeche2.Value).Activate kann nicht gefunden werden, oder?
Aber es funktioniert auch nicht, wenn ich die Makros aus Modul 9 in "Diese Arbeitsmappe" mit reinkopiere.
Hab echt schon alles probiert und langsam gehen mir die Ideen aus
Alex
Bild

Betrifft: AW: klappt leider noch nicht
von: GerdW
Geschrieben am: 19.09.2003 14:06:46
Ich weiß gar nicht mehr, wie ichs noch erklären soll.
in der Prozedur, die in OnAction angegeben hast muss sinngemäß stehen:



Sub Schaltflaeche2Befehl()
Worksheets(Commandbars("DerNamedeinerCommandbar").controls("CaptiondesControls").text).Activate
End Sub



Gerd
Bild

Betrifft: Danke
von: Alex
Geschrieben am: 19.09.2003 14:28:37
Danke, jetzt hauts hin. Mein Problem war, dass ich nich die Caption, sondern die variablenbezeichnung eingetragen hatte. Naja, zum Glück ist bald Wochenende
alex
 Bild
Excel-Beispiele zum Thema " ComboBox in neuer Symbolleiste"
ComboBox als Symbol Alle ComboBoxes auf Position 1
Werte in eine ComboBox einer UserForm übernehmen ComboBox in Abhängigkeit einer 2. ComboBox ein-/ausblenden
ComboBox mit Monatsnamen füllen Mehrspaltige ComboBox
ComboBox2 in Abhängigkeit von ComboBox1 bestücken Nur Zellen mit Inhalt in ComboBox listen
Neue UserForm bedingt nach ComboBox-Auswahl aufrufen Neues Element in ComboBox