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

auswahlliste mit VBA

Forumthread: auswahlliste mit VBA

auswahlliste mit VBA
08.12.2004 19:08:38
simon
Hallo
wie erstelle ich eine Auswahlliste (dropdown) wie wir sie ganz oft im WWW finden, nur in einem UserForm in Excel mit VBA? - Kann mir jemand weiterhelfen?
Liebe Grüße,
Simon
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox
simon
Hallo Christoph,
danke für deine schnelle Antwort, die funktioniert.
Wie ist es möglich, die Liste mit "eigenen Angaben" zu füllen? - Sprich Daten, die nicht in der Tabelle stehen?
LG
Simon
Anzeige
AW: ComboBox
simon
habe
Me.cbo.AddItem "text"
gefunden. Gibt es noch was besseres?
Ich kann zwar spalten in die Liste einfügen, aber keine Zeilen, gibt es dafür einen Grund?
Und, letzte frage: "wenn zb. text gewählt wurde, wie kann ich das auslesen?"
Danke für eure Mühe,
Simon
AW: ComboBox
08.12.2004 21:33:47
Christoph
Hi Simon,
ja - das Füllen und Auslesen einer ComboBox (und ListBox) ist ein weites Feld.
AddItem ist nur dann sinnvoll, wenn kein zusammenhängender Bereich (also nur einzelne Werte) eingelesen werden sollen.
Sonst ist "ComboBox1.List = ..." immer schneller
Wenn du Zeilen einlesen willst, dann muss der Bereich zuvor transponiert werden (oder aber du arbeitest wieder mit AddItem)
Bsp:

Me.ComboBox1.List = Application.Transpose(Sheets("Tabelle1").Range("C1:F1").Value)

Wenn du feste Werte eingeben willst, dann kannst du zuvor die Werte in einem Array definieren und anschließend wieder über .List der ComboBox zuordnen (oder über AddItem)
Bsp:

Dim arr
arr = Array("Text1", "Text2", "Text3")
Me.ComboBox1.List = arr

Das Auslesen des gewählten Eintrages:
Bsp:

Private Sub ComboBox1_Change()
Me.TextBox1 = Me.ComboBox1
End Sub

hoffe dir geholfen zu haben
Gruß
Christoph
Anzeige
AW: ComboBox
simion
Hi Christoph,
wow, vielen Dank für deine Hilfe!
Ich komme trotz neuer Fragen der Lösung immer näher. Bin auf die nächste gestoßen.
Wie kann ich eine Array definieren, so dass wenn der Wert "Haus" gewählt wird, die Zahl "7" ausgegeben wird und nicht der Wert "Haus"?
Mit
arr = Array("Haus", "Maus")
erhalte ich eben Haus, bzw. Maus.
Danke für deine Hilfe,
Grüße,
Simon
Anzeige
AW: ComboBox
08.12.2004 22:53:00
Christoph
Hi Simon,
da ich deine konkrete Datei nicht kenne, hier noch ein Bsp:
1: nehmen wir mal an, dein Eintrag "Maus" ist der 7. Eintrag aus der ComboBox
Dann kannst du den ListIndex der ComboBox übergeben:

Me.TextBox1 = Me.ComboBox1.ListIndex + 1   'ListIndex fängt bei 0 an

2: die Zuordnung des Array-Eintrags hat nichts mit der Positon des ComboBox-Eintrags zu tun: (dann definiere zwei Arrays, deren Einträge miteinander korrelieren)

Dim arr1
Dim arr2
arr1 = Array("Haus", "Maus", "raus")
arr2 = Array(5, 7, 9)
Me.TextBox1 = arr2(Me.ComboBox1.ListIndex) 'Arrays fangen auch bei 0 an, daher nicht "+1"

=> der Auswahl "Maus" wird die 7 zugeordnet
Ich verabschiede mich jetzt, aber ich denke, deine Frage müsste beantwortet sein.
Ich schau morgen abend noch mal rein
bis dann
Gruß
Christoph
Anzeige
AW: ComboBox
simon
Guten Morgen Christoph,
nach einigem studieren, verzweifeln, grübeln und sonstigen Hindernissen funktioniert es inzwischen. War ein sehr lehrreicher Abend für mich, danke für deine Hilfe. (Das Problem lag daran, dass ich erst noch den unterschied zwischen Privat und Public lernen musste. - Ob ich das jetzt schon zu 100% verstanden habe oder nicht... keine Ahnung. Aber es liegen noch ein paar Urlaubstage vor mir und da wäre es ja schade, wenn ich nichts zu tun hätte! ;-))
Liebe Grüße und danke für deine Hilfe und dein Wissen,
Simon
Anzeige
Danke für die Rückmeldung (o.T.)
09.12.2004 22:03:13
Christoph
;
Anzeige

Infobox / Tutorial

Auswahlliste in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Auswahlliste in Excel mit VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein UserForm hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt, wähle Einfügen und dann UserForm.

  3. Füge eine ComboBox hinzu: Ziehe das ComboBox-Steuerelement auf das UserForm.

  4. Fülle die ComboBox mit Werten: Nutze den folgenden Code, um die ComboBox mit eigenen Angaben zu füllen:

    Private Sub UserForm_Initialize()
       Me.ComboBox1.AddItem "Text1"
       Me.ComboBox1.AddItem "Text2"
       Me.ComboBox1.AddItem "Text3"
    End Sub
  5. Werte auslesen: Um den gewählten Wert auszulesen und in ein Textfeld zu übertragen, verwende diesen Code:

    Private Sub ComboBox1_Change()
       Me.TextBox1 = Me.ComboBox1.Value
    End Sub

Häufige Fehler und Lösungen

  • Fehler: ComboBox bleibt leer.

    • Lösung: Stelle sicher, dass der Code zur Befüllung der ComboBox im UserForm_Initialize() Ereignis platziert ist.
  • Fehler: Falscher Wert wird ausgegeben.

    • Lösung: Überprüfe, ob du den richtigen Index beim Auslesen verwendest:
    Me.TextBox1 = Me.ComboBox1.ListIndex + 1

Alternative Methoden

Eine andere Möglichkeit, eine Auswahlliste in Excel zu erstellen, ist die Verwendung eines Excel-Auswahlfeldes:

  1. Datenquelle definieren: Lege eine Liste in einem Arbeitsblatt an.
  2. Datenüberprüfung anwenden: Wähle die Zelle aus, in der die Auswahl erscheinen soll, gehe zu Daten > Datenüberprüfung > Liste und wähle den Bereich deiner Liste aus.

Für komplexere Anwendungen mit vba kannst du auch ein Dropdown-Feld über eine InputBox erstellen:

Dim Auswahl As String
Auswahl = InputBox("Bitte wählen Sie einen Wert:", "Auswahlmenü")

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du eine ComboBox mit Werten aus einem Array füllst:

Dim arr
arr = Array("Haus", "Maus", "Vogel")
Me.ComboBox1.List = arr

Um eine Zuordnung zwischen den Texten und Zahlen herzustellen, verwende zwei Arrays:

Dim arr1, arr2
arr1 = Array("Haus", "Maus", "Vogel")
arr2 = Array(7, 5, 3)

Private Sub ComboBox1_Change()
    Me.TextBox1 = arr2(Me.ComboBox1.ListIndex)
End Sub

Tipps für Profis

  • Nutze Application.Transpose, wenn du Werte aus einem Bereich in einer Zeile in die ComboBox einfügen möchtest.

    Me.ComboBox1.List = Application.Transpose(Sheets("Tabelle1").Range("C1:F1").Value)
  • Arbeite mit Arrays, um die Performance zu erhöhen, besonders wenn du viele Werte hast.

  • Verwende Private für Sub-Prozeduren, um den Code sauber zu halten und die Sichtbarkeit zu beschränken.


FAQ: Häufige Fragen

1. Wie kann ich eine Auswahlliste in Excel für mehrere Zellen gleichzeitig erstellen?
Verwende die Funktion für Datenüberprüfung und wähle den Bereich aus, in dem die Auswahl gelten soll.

2. Kann ich die Auswahlliste dynamisch aktualisieren?
Ja, verwende ein Worksheet_Change-Ereignis, um die Liste basierend auf Änderungen in einem bestimmten Bereich zu aktualisieren.

3. Wie kann ich eine Auswahlliste in einem UserForm anpassen?
Du kannst die Eigenschaften der ComboBox im VBA-Editor anpassen, um das Layout oder das Verhalten zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige