Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: initialisieren von Combobox

initialisieren von Combobox
19.10.2006 11:02:29
Combobox
Hallo zusammen,
ich möchte bei einer Combobox einen Ansprechpartner auswählen, der dann in eine Zelle geschrieben wird (siehe offset-funktion). Wenn darüber hinaus ein Ansprechpartner aus der 2.Combobox angeklickt wird, sollen beide erscheinen. Leider funktioniert meine Prozedur irgendwie nicht, d.h. wenn sich die UserForm öffnet, sind in den Comboboxen leer. Habe ich bei der Initialisierungsfunktion etwas falsch gemacht?
Danke und Gruß
Ingo

Private Sub frm_eingabe_neue_leistung_initialize()
With Me.cbo_Ansprechpartner1
.AddItem "Herr A"
.AddItem "Herr B"
.AddItem "Herr C"
.AddItem "Herr D"
.AddItem "Frau E"
.ListIndex = "0"
End Sub


Private Sub frm_eingabe_neue_leistung_initialize()
With Me.cbo_Ansprechpartner2
.AddItem "Herr A"
.AddItem "Herr B"
.AddItem "Herr C"
.AddItem "Herr D"
.AddItem "Frau E"
.ListIndex = "0"
End Sub


Private Sub cmd_eingabe_click()
If cbo_Ansprechpartner2.Value <> 0 Then
ActiveCell.Offset(0, 2) = cbo_Ansprechpartner1 & " , " & cbo_Ansprechpartner2
Else
ActiveCell.Offset(0, 2) = cbo_Ansprechpartner1.Value
End If
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: initialisieren von Combobox
19.10.2006 11:24:45
Combobox
Hallo Ingo,
1. Du kannst nur ein Initialize-Makro pro UserForm verwenden.
2. Der Name dieses Initialize-Makros richtet sich nicht nach dem Namen der UserForm, sondern ist immer "UserForm_Initialize". Du kannst im VBA-Editor die Namen von Ereignismakros über die Listenfelder oben rechts definieren, dann gibts hier keine Mißverständnisse und vor allem auch keine Probleme wegen Schreibfehlern.
3. Die ListIndex-Eigenschaft der Kombinationsfelder erwartet einen Wert, du hast "0" als String zugewiesen.

Private Sub UserForm_Initialize()
With Me.cbo_Ansprechpartner1
.AddItem "Herr A"
.AddItem "Herr B"
.AddItem "Herr C"
.AddItem "Herr D"
.AddItem "Frau E"
.ListIndex = 0
End With
With Me.cbo_Ansprechpartner2
.AddItem "Herr A"
.AddItem "Herr B"
.AddItem "Herr C"
.AddItem "Herr D"
.AddItem "Frau E"
.ListIndex = 0
End With
End Sub
Gruß Ingolf
Anzeige
AW: initialisieren von Combobox
19.10.2006 12:04:04
Combobox
Hallo Ingolf,
danke für Deine Hilfe, habe die Änderungen umgesetzt, muss aber leider sagen, dass es noch nicht so klappt.
Wie meinst Du das mit dem ListIndex, das verstehe ich noch nicht so ganz.
Wie bekomme ich es hin, dass einer Variablen die Auswahl der Combobox zugeordnet wird?
Oder habe ich einen Denkfehler?

Private Sub Combobox_Eingabe()
If cbo_Ansprechpartner2.Value <> " " Then
Ansprechpartner_FB = cbo_Ansprechpartner1 & " , " & cbo_Ansprechpartner2
Else
Ansprechpartner_FB = cbo_Ansprechpartner1
End If
End Sub

Danke und Gruß Ingo
Anzeige
AW: initialisieren von Combobox
19.10.2006 16:21:19
Combobox
Hallo Ingo,
in deinem Makro hast du mit
.ListIndex = "0"
versucht, der Eigenschaft ListIndex deiner ComboBox die 0 als Text zuzuweisen. Du musst die Anführungszeichen um die 0 weglassen, um die Null als Zahl zuzuweisen. Das habe ich gemeint. Allerdings solltest du dem ListIndex statt dessen den Wert -1 zuweisen, was dafür steht, dass kein Eintrag ausgewählt ist, also
.ListIndex = -1
Dann kannst du in Abhängigkeit davon, ob in der zweiten ComboBox etwas ausgewählt wurde der Variablen Ansprechpartner_FB den entsprechendn Wert zuweisen:
Private Sub Combobox_Eingabe()
If cbo_Ansprechpartner2.ListIndex < 0 Then
Ansprechpartner_FB = cbo_Ansprechpartner1 & " , " & cbo_Ansprechpartner2
Else
Ansprechpartner_FB = cbo_Ansprechpartner1
End If
End Sub
Gruß Ingolf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Combobox in Excel UserForm initialisieren


Schritt-für-Schritt-Anleitung

Um eine Combobox in einer Excel UserForm zu initialisieren, folge diesen Schritten:

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

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

  3. Füge eine Combobox hinzu: Ziehe eine Combobox aus der Toolbox auf die UserForm.

  4. Benenne die Combobox: Wähle die Combobox aus und ändere den Namen in den Eigenschaften (z. B. cbo_Ansprechpartner1).

  5. Schreibe das Initialize-Makro: Füge den folgenden Code in das Modul der UserForm ein:

    Private Sub UserForm_Initialize()
       With Me.cbo_Ansprechpartner1
           .AddItem "Herr A"
           .AddItem "Herr B"
           .AddItem "Herr C"
           .AddItem "Herr D"
           .AddItem "Frau E"
           .ListIndex = 0
       End With
    End Sub
  6. Testen der UserForm: Schließe den VBA-Editor und starte die UserForm, um zu sehen, ob die Combobox erfolgreich initialisiert wurde.


Häufige Fehler und Lösungen

  • Fehler: Combobox bleibt leer
    Lösung: Stelle sicher, dass das Initialize-Makro korrekt benannt ist. Es sollte UserForm_Initialize heißen, nicht frm_eingabe_neue_leistung_initialize.

  • Fehler: ListIndex nicht gesetzt
    Lösung: Setze den ListIndex ohne Anführungszeichen: .ListIndex = 0 (nicht .ListIndex = "0"). Um sicherzustellen, dass kein Eintrag ausgewählt ist, verwende .ListIndex = -1.


Alternative Methoden

Eine Alternative zur Initialisierung einer Combobox in einer UserForm ist die Verwendung von Excel-Daten als Quelle. Du kannst die Werte aus einem Arbeitsblatt in die Combobox laden:

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Datenblatt")

    With Me.cbo_Ansprechpartner1
        .Clear
        Dim i As Integer
        For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            .AddItem ws.Cells(i, 1).Value
        Next i
    End With
End Sub

In diesem Beispiel wird die Combobox mit Werten aus der ersten Spalte eines Arbeitsblatts namens "Datenblatt" gefüllt.


Praktische Beispiele

Hier sind einige Beispiele, wie du die Auswahl aus der Combobox verwenden kannst:

Private Sub cmd_eingabe_click()
    If cbo_Ansprechpartner2.ListIndex < 0 Then
        ActiveCell.Offset(0, 2).Value = cbo_Ansprechpartner1.Value
    Else
        ActiveCell.Offset(0, 2).Value = cbo_Ansprechpartner1.Value & " , " & cbo_Ansprechpartner2.Value
    End If
End Sub

In diesem Code wird der Wert der ersten Combobox in die aktive Zelle geschrieben, gefolgt von dem Wert der zweiten Combobox, falls diese ausgewählt wurde.


Tipps für Profis

  • Verwende Arrays für die Initialisierung: Wenn du viele Elemente hast, kannst du ein Array verwenden, um die Combobox effizient zu befüllen:

    Private Sub UserForm_Initialize()
       Dim items As Variant
       items = Array("Herr A", "Herr B", "Herr C", "Herr D", "Frau E")
       Me.cbo_Ansprechpartner1.List = items
    End Sub
  • Dynamische Datenquelle: Ziehe in Betracht, eine Datenbank oder eine externe Datei als Quelle für die Combobox zu verwenden, um die Wartung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Comboboxen gleichzeitig initialisieren?
Du kannst das innerhalb des UserForm_Initialize-Makros tun, indem du mehrere Comboboxen in einem einzigen Codeblock bearbeitest.

2. Was soll ich tun, wenn sich die UserForm nicht öffnet?
Überprüfe, ob das Makro für die UserForm korrekt im VBA-Editor geschrieben ist und ob es keine Kompilierungsfehler gibt.

3. Wie kann ich den Wert einer Combobox einer Variablen zuweisen?
Du kannst den Wert einer Combobox einer Variablen wie folgt zuweisen:

Dim Ansprechpartner_FB As String
Ansprechpartner_FB = cbo_Ansprechpartner1.Value

Diese Informationen sollten dir helfen, deine Excel Combobox in einer UserForm erfolgreich zu initialisieren und zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige