Herbers Excel-Forum - das Archiv
ComboBox in neuer Symbolleiste
Informationen und Beispiele zu den hier genannten Dialog-Elementen:

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