Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ribbon-DropDown-Listenfeld variabel füllen?

Forumthread: Ribbon-DropDown-Listenfeld variabel füllen?

Ribbon-DropDown-Listenfeld variabel füllen?
17.01.2009 07:23:00
Kasimir
Hallo an alle!
Ich habe da mal eine Frage bezüglich der Excel 2007 Ribbons.
Zum Verständnis, ich habe eine xls-Datei, in der ich beim Starten eine neue Symbolleiste erzeuge. Diese neue Symbolleiste hat u.a. ein msoControlComboBox, die ich über eine Schleife mit bestimmten Tabellenblattnamen fülle, da die Auswahl variabel sein muss. Das muss sein, weil immer div. Blätter hinzukommen und andere gelöscht werden. Über jeden ausgewählten Tabellenblattnamen wird dann das Tabellenblatt aufgerufen.
Da nun bei uns immer mehr Excel 2007 einzug hält, habe ich die gleiche Datei als xlsm-Datei erstellt. Ich habe ein eigenes Menü mit diesen Ribbon-Schaltflächen erstellt. Allerdings hänge ich nun am variablen Füllen des DropDown Listenfelds. Wie kann man ein DropDown-Feld denn variable füllen und das bei Auswahl eines Blattnamens aus diesem Feld das Blatt auch angezeigt wird.
Hat da jemand eine Idee?
Danke Euch für die Hilfe,
Kasimir
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon-DropDown-Listenfeld variabel füllen?
17.01.2009 20:45:00
Kasimir
Hallo Hajo,
danke Dir für Deine Antwort. Ich habe mich nun mit der ComboBox von
http://www.office2007-hilfe.de/ribbonx-multi/ribbonx-teil-5-auswahl-und-kombinationsfelder-t3722.html
beschäftigt. Die wird ja variabel gefüllt. Allerdings nur einmal pro Sitzung. Wenn man etwas in die Spalten einträgt, die in die ComboBox eingelesen werden, erscheinen die Daten erst nach einem Neustart. Bei mir müsste dass allerdings auch passieren, sobald ein Blatt hinzukommt oder gelöscht wird. Das Ganze ohne dass die Datei gespeichert und geschlossen wird. Geht das?
Danke und Gruß,
Kasimir
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Ribbon-DropDown-Listenfeld in Excel 2007 variabel füllen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel 2007 und lade die Datei, in der das Ribbon-DropDown-Listenfeld erstellt werden soll.

  2. Erstelle eine neue Symbolleiste durch den Zugriff auf die "Entwicklertools". Falls die Entwicklertools nicht sichtbar sind, aktiviere sie über die Excel-Optionen.

  3. Füge eine ComboBox hinzu:

    • Klicke mit der rechten Maustaste auf die neue Symbolleiste und wähle "Anpassen".
    • Wähle die Option "Steuerelemente" und ziehe eine ComboBox auf die Symbolleiste.
  4. Verwende VBA, um die ComboBox mit den Tabellenblattnamen zu füllen. Dazu benötigst du den folgenden Code:

    Dim ws As Worksheet
    Dim cb As CommandBarComboBox
    Set cb = Application.CommandBars("DeineSymbolleiste").Controls.Add(Type:=msoControlComboBox)
    
    For Each ws In ThisWorkbook.Worksheets
       cb.AddItem ws.Name
    Next ws
  5. Füge eine Auswahl-Logik hinzu, um das ausgewählte Blatt anzuzeigen:

    Private Sub cb_Change()
       Dim selectedSheet As String
       selectedSheet = cb.Text
       If Evaluate("ISREF('" & selectedSheet & "'!A1)") Then
           Sheets(selectedSheet).Select
       End If
    End Sub
  6. Teste die Funktionalität: Speichere die Datei als .xlsm und starte die Datei erneut, um zu sehen, ob die ComboBox korrekt mit den aktuellen Blattnamen gefüllt wird.


Häufige Fehler und Lösungen

  • Problem: Die ComboBox wird nicht aktualisiert, wenn Blätter hinzugefügt oder entfernt werden.

    • Lösung: Verwende das VBA-Ereignis Workbook_SheetActivate, um die ComboBox bei jedem Blattwechsel zu aktualisieren.
  • Problem: Die ComboBox zeigt nur die Namen beim ersten Öffnen an.

    • Lösung: Stelle sicher, dass der Code zur Befüllung der ComboBox im Workbook_Open-Ereignis enthalten ist.

Alternative Methoden

Eine alternative Methode zur Erstellung eines Excel Ribbon Dropdown ist die Verwendung von XML, um die Ribbon-Oberfläche zu gestalten. Du kannst einen XML-Code schreiben, der die ComboBox definiert und die Daten aus einem bestimmten Bereich der Arbeitsmappe bezieht.

<customUI xmlns="http://schemas.microsoft.com/office/officeapp">
   <ribbon>
      <comboBox id="myComboBox" onChange="ComboBoxChange" size="large" />
   </ribbon>
</customUI>

Hierbei musst du sicherstellen, dass die onChange-Ereignisprozedur im VBA entsprechend definiert ist.


Praktische Beispiele

Ein praktisches Beispiel für ein Excel 2007 Dropdown ist die Verwendung von Daten aus einer dynamischen Liste, die in einer Tabelle gespeichert ist. Ändere den Code in der ComboBox-Befüllung, um Daten aus einer Tabelle zu verwenden:

Dim rng As Range
Set rng = ThisWorkbook.Sheets("Daten").Range("A1:A10")
For Each cell In rng
    cb.AddItem cell.Value
Next cell

Dies ermöglicht es dir, die Dropdown-Liste dynamisch basierend auf den Daten in der Tabelle zu aktualisieren.


Tipps für Profis

  • Verwende die Application.OnTime Methode, um die ComboBox regelmäßig zu aktualisieren, ohne die Datei schließen zu müssen.
  • Dokumentation: Halte deinen VBA-Code gut dokumentiert, um später Änderungen oder Erweiterungen einfach vornehmen zu können.
  • Benutzerdefinierte Menüs: Erstelle benutzerdefinierte Menüs und Schaltflächen für eine bessere Benutzererfahrung im Ribbon.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Dropdown immer aktuell ist?
Du kannst die ComboBox bei jedem Blattwechsel aktualisieren, indem du einen Ereignis-Handler für Workbook_SheetActivate verwendest.

2. Gibt es Einschränkungen für die Anzahl der Elemente in der ComboBox?
Ja, die Anzahl der Elemente kann je nach Ressourcen des Computers variieren, aber in der Regel sollte eine ComboBox nicht mehr als 1000 Einträge enthalten, um die Benutzerfreundlichkeit zu gewährleisten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige