Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Blattliste über CommandBarComboBox anzeigen lassen

Blattliste über CommandBarComboBox anzeigen lassen
06.11.2007 18:40:00
Holger
Hallo Exceluser,
ich habe in meiner Symbolliste als Listenfeld "Blattliste" eingefügt, über dem ich bequem die Tabellenblätter meiner Arbeitsmappe auswählen kann. Dazu habe ich in einer Datei, die bei jedem Excelstart im "Hintergrund" aufgerufen wird, folgendes Makro für das Listenfeld drin.
Sub SheetCombo_OnAction()
Dim cbcb As CommandBarComboBox
On Error Resume Next
Set cbcb = CommandBars.FindControl(Type:=msoControlDropdown, Tag:="Blattliste")
ActiveWorkbook.Sheets(cbcb.Text).Activate
End Sub


Soweit alles ok. Dann hab ich noch ein dazugehöriges Makro als Klassenmodul (siehe unten). Wozu das genau gut ist, weiß ich nicht (hab die Makros mal von irgendwo reinkopiert). Es funktioniert wunderbar, nur bei Dateien, die neben Modulen auch Formulare (in VBA, nicht direkt im Tab.-Blatt) enthalten, funktioniert es nicht. Es bleibt dann immer bei der Programmzeile "For Each sheet In sh.Parent.Sheets" hängen. Kann mir jemand sagen warum und wozu das Klassenmodul-Makro eigentlich dient?
Im Klassenmodul AppClass:
Option Explicit
' es sollen Application-Ereignisse verarbeitet werden
Public WithEvents app As Application


Private Sub app_SheetActivate(ByVal sh As Object)
Dim cbcb As CommandBarComboBox
Dim sheet As Object
Dim i
Set cbcb = Application.CommandBars.FindControl(Type:=msoControlDropdown, Tag:="Blattliste")
cbcb.Clear
'sh.parent liefert ein Workbook-Objekt
For Each sheet In sh.Parent.Sheets
If TypeName(sheet)  "Module" Then
cbcb.AddItem sheet.Name
End If
Next
'richtigen Listeneintrag aktivieren
For i = 1 To cbcb.ListCount
If cbcb.List(i) = sh.Name Then cbcb.ListIndex = i: Exit For
Next
End Sub


Für jegliche Hilfe vielen Dank. Ich hoffe, das ist nicht zu knifflig und ich hab es einigermaßen verständlich schildern können.
Grüße von Holger

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

Betreff
Datum
Anwender
Anzeige
AW: Blattliste über CommandBarComboBox anzeigen la
06.11.2007 22:13:00
Uduuh
Hallo,
das dient dazu, die Liste Aktuell zu halten.
Alternative: http://www.excelerator.de/stkfiles/blattregister.xla
Hier wird ein Menüpnkt zum Kontextmenü der Registerleiste zugefügt.
Gruß aus’m Pott
Udo

AW: Blattliste über CommandBarComboBox anzeigen lassen
07.11.2007 09:07:00
Holger
Uduuh, das gleiche Problem tritt auch bei deiner Variante auf! Hast du eine Datei mit Formular drin, kommt es zu einem Fehler. *schnief*

AW: Blattliste über CommandBarComboBox anzeigen lassen
07.11.2007 09:09:00
Holger
Nachtrag: Auf Wunsch schicke ich gern ein File zum Testen zu.

AW: Blattliste über CommandBarComboBox anzeigen la
07.11.2007 09:48:00
Rudi
Hallo,
tu das.
Ich kann in Udos Code keinen Fehler feststellen. Was sollte ein Userform auch damit zu tun haben?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige