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

Forumthread: Excel VBA Combobox Inhalt aus anderer Tabelle

Excel VBA Combobox Inhalt aus anderer Tabelle
26.08.2014 11:36:00
MaddyHa
Guten Tag,
ich habe da ein Problem und hoffe hier einige Experten zu finden, die mir helfen können :)
So, ich versuche nun mal es so genau wie möglich zu erklären:
Ich habe eine Userform mit einer ComboBox, welche ich mit Inhalt füllen möchte.
Diese Userform wird durch einen Button in der Tabelle 1 aufgerufen.
Die Inhalte für diese Combobox möchte ich aus Tabelle 3 nehmen. Diese Tabelle ist eine von einem Sharepoint heruntergelade Tabelle.
Wie genau kann ich auf diese Tabelle in meiner Combobox zugreifen?
Es gibt in dieser Sharepoint-Liste eine Spalte B, die die verschiedensten Gruppennamen hat. Diese möchte ich mittels VBA zu einer Überschrift (für jede Gruppe) zusammenfassen und in der Combobox zur Auswahl stellen.
Leider hab ich selbst gerade noch nicht so die Vorstellung, wie ich diese Problemstellung bewältigen könnte.
Hat hier jemand vielleicht eine Idee?
Vielen Dank im Voraus!

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Combobox Inhalt aus anderer Tabelle
26.08.2014 12:16:38
JoWE
Hallo
in den Eigenschaften der Combobox.
z.B. in RowSource tbImport!A2:A12
Gruß
Jochen

AW: Excel VBA Combobox Inhalt aus anderer Tabelle
26.08.2014 14:11:05
MaddyHa
Vielen Dank, das war sehr hilfreich, Jochen!
Eine Frage hätte ich da allerding noch:
Zur Veranschaulichung:
Userbild
- Gruppe soll gewählt werden, dann in Combobox2 die für diese Gruppe vorhandenen Untergruppen (Eigenschaft) anzeigen und nicht wie momentan die komplette Spalte in der die Untergruppe steht.
Wie könnte ich das machen?

Anzeige
AW: Excel VBA Combobox Inhalt aus anderer Tabelle
26.08.2014 15:50:15
JoWE
Hallo nochmal,
angenommen Deine Beispieltabelle wäre die Tabelle2 mit den Werten in A1:C8 und darin die Überschriften in Zeile 1. Wenn die Combobox1 diese Werte als Datenquelle (RowSource) kennt,
dann vllt. so:
Private Sub ComboBox1_Change()
For Each ze In Sheets("Tabelle2").Range("B2:B8")
If ze = Me.ComboBox1.Text Then
Me.ComboBox2.AddItem Sheets("Tabelle2").Cells(ze.Row, 3)
End If
Next
End Sub

Gruß
Jochen

Anzeige
AW: Excel VBA Combobox Inhalt aus anderer Tabelle
28.08.2014 09:28:31
MaddyHa
Super, vielen Dank das hat gut funktioniert!
Problem dabei ist nur wenn ich in ComboBox1 z.B. Gruppe 00 gewählt habe und dann in ComboBox2 abc... mir es dann doch anders überlege und Gruppe 01 in ComboBox1 auswähle, dann bleiben die Werte aus der vorigen Suche in der ComboBox2 enthalten (aber: auch die neuen für Gruppe 01 sind mit drin).
Habe schon fleißig gesucht, aber weiß nicht so genau, wie ich dies aktualisieren könnte.

Anzeige
AW: Excel VBA Combobox Inhalt aus anderer Tabelle
28.08.2014 09:42:43
MaddyHa
Noch ein Zusatz: Wie kriege ich es hin, dass in der ComboBox2, dann nur einmal jeder Begriff steht?

AW: Excel VBA Combobox Inhalt aus anderer Tabelle
29.08.2014 08:23:02
JoWE
Hallo,
ungetestet:
Private Sub ComboBox1_Change()
Dim sh As Worksheet
Dim ze As Range
Set sh = ThisWorkbook.sheest("Tabelle2")
With sh
For Each ze In .Range("B2:B8")
If ze = Me.ComboBox1.Text Then
If .Cells(ze.Row1, 3)  .Cells(ze.Row - 1, 3) Then
Me.ComboBox2.AddItem .Cells(ze.Row, 3)
End If
End If
Next
End With
End Sub

Gruß
Jochen
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Combobox Inhalt aus einer Tabelle füllen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und füge eine UserForm hinzu.

  2. ComboBox hinzufügen: Ziehe eine ComboBox auf die UserForm. Du kannst auch eine ActiveX ComboBox verwenden, wenn Du mehr Funktionen benötigst.

  3. Datenquelle festlegen: Um die ComboBox mit Daten aus einer anderen Tabelle zu füllen, verwende den folgenden VBA-Code:

    Private Sub UserForm_Initialize()
       Dim sh As Worksheet
       Set sh = ThisWorkbook.Sheets("Tabelle3") ' Deine Tabelle, aus der die Daten kommen
       Dim ze As Range
    
       For Each ze In sh.Range("B2:B12") ' Bereich anpassen
           Me.ComboBox1.AddItem ze.Value ' Füge jeden Wert zur ComboBox hinzu
       Next ze
    End Sub
  4. Event für ComboBox: Um die zweite ComboBox basierend auf der Auswahl der ersten ComboBox zu füllen, kannst Du folgenden Code verwenden:

    Private Sub ComboBox1_Change()
       Dim sh As Worksheet
       Dim ze As Range
       Set sh = ThisWorkbook.Sheets("Tabelle2")
       Me.ComboBox2.Clear ' Vorherige Einträge löschen
    
       For Each ze In sh.Range("B2:B8")
           If ze.Value = Me.ComboBox1.Value Then
               Me.ComboBox2.AddItem ze.Offset(0, 1).Value ' Füge die Untergruppe hinzu
           End If
       Next ze
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden": Überprüfe, ob der Name der Tabelle korrekt ist und die Tabelle tatsächlich existiert.
  • Fehler: Leere ComboBox: Stelle sicher, dass der Bereich, den du in der For Each-Schleife angibst, tatsächlich Daten enthält.
  • Problem: Einträge bleiben in der ComboBox: Nutze Me.ComboBox2.Clear, um die vorherigen Einträge zu entfernen, bevor neue hinzugefügt werden.

Alternative Methoden

Wenn Du die ComboBox nicht über VBA füllen möchtest, kannst Du auch die RowSource-Eigenschaft verwenden:

  1. Wähle die ComboBox in der UserForm aus.
  2. Gehe zu den Eigenschaften und setze RowSource auf den Zellbereich, z. B. Tabelle3!B2:B12.

Praktische Beispiele

  • Beispiel für das Füllen einer ComboBox mit Gruppennamen: Verwende den oben genannten Code, um die ComboBox mit Werten aus einer SharePoint-Tabelle zu füllen.
  • Beispiel für abhängige ComboBoxes: Nutze den ComboBox1_Change-Event, um die zweite ComboBox basierend auf der Auswahl der ersten zu aktualisieren.

Tipps für Profis

  • Verwende Dictionary-Objekte, um doppelte Einträge in der ComboBox zu vermeiden.
  • Experimentiere mit der ActiveX ComboBox, um erweiterte Funktionen wie Dropdown-Listen und mehr zu nutzen.
  • Wenn Du eine Excel Selectbox verwenden möchtest, kann dies die Benutzererfahrung verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur eindeutige Werte in der ComboBox angezeigt werden?
Du kannst ein Dictionary-Objekt verwenden, um die Werte zu speichern, bevor Du sie zur ComboBox hinzufügst.

2. Kann ich eine ComboBox auch in einer Tabelle verwenden?
Ja, Du kannst auch eine Excel ComboBox direkt in einer Tabelle verwenden, um Werte aus einer anderen Tabelle zu ziehen.

3. Wie kann ich die ComboBox automatisch aktualisieren?
Füge den Code in das Change-Ereignis der ersten ComboBox ein, um die zweite ComboBox bei jeder Auswahl zu aktualisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige