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

Inhalt von Combobox in Labels

Forumthread: Inhalt von Combobox in Labels

Inhalt von Combobox in Labels
31.12.2016 16:29:30
Combobox
Guten Abend miteinander
Auf einer UF habe ich eine Combobox, darunter sind 10 Label
Bei Auswahl in der Combobox soll das erste Label gefüllt werden ( Label1 = ComboBox1.Value)
Bei jeder weiteren Auswahl aus der Combobox soll das nächste freie Label gefüllt werden.
Leider reichen meine VBA Kentnisse nicht und ich bin Dankbar für Hilfe.
Ich wünsche allen einen guten Rutsch und alles Gute im neuen Jahr.
Vielen Dank an alle Helfer die das ganze Jahr mit Ihrem Wissen Hilfe leisten.
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt von Combobox in Labels
31.12.2016 16:41:14
Combobox
benutze eine Variable die Du hochzählst bei jedem Klick. Startwert 1
Controls("Label" & Variable).caption=Combobox1
Gruß Hajo
AW: Inhalt von Combobox in Labels
31.12.2016 17:04:22
Combobox
Hallo Benedikt,
was soll passieren, wenn alle 10 Label bereits aus der Combobox gefüllt sind ?
Private Sub ComboBox1_Change()
Dim L As Long
If ComboBox1.ListIndex = -1 Then Exit Sub
For L = 1 To 10
With Controls("Label" & CStr(L))
If .Caption = .Name Or .Caption = "" Then
.Caption = ComboBox1.Value
Exit For
End If
End With
Next
End Sub
Gruß Gerd
Anzeige
AW: Inhalt von Combobox in Labels
31.12.2016 17:30:57
Combobox
Vielen Dank Gerd. Es läuft Perfekt, für mich ein verspätetes Weihnachtsgeschenk.
Wenn alle Labels ausgefüllt sind soll keine Eingabe in die Combobox mehr möglich sein.
Danke auch an Hajo
Ich wünsche euch einen schönen Silvesterabend
Nachfrage an Gerd
31.12.2016 18:38:35
Benedikt
Das Macro läuft einwandfrei.
Jetzt muss ich auf der gleichen Uf eine Combobox2 einrichten mit ebenfalls 10 Labels.
Nur CopyPaste und ändern auf Combobox2 läuft nicht.
Darf ich Dich noch einmal bemühen?
Anzeige
AW: Nachfrage an Gerd
31.12.2016 18:45:29
Gerd
Hallo Benedikt,
die Schleife im Change von ComboBox2 wird von
For L = 11 to 20
laufen sollen?
Gruß Gerd
Vielen Dank
31.12.2016 19:34:47
Benedikt
.
Weitere Frage zu Combobox
01.01.2017 09:25:28
Benedikt
Gibt es eine Möglichkeit nach der Auswahl des Textes,die Markierung des Textes aufzuheben?
Der verwendete Begriff sollte für das nächste einfügen eventuell wieder verwendet werden, der Fokus ist aber blau und der Begriff kann nicht ein zweites Mal angeklickt werden.
Anzeige
ComboBox1.Text = ""
01.01.2017 10:12:30
Matthias
Hallo
Private Sub ComboBox1_Change()
Dim L As Long
If ComboBox1.ListIndex = -1 Then Exit Sub
For L = 1 To 5
With Controls("Label" & CStr(L))
If .Caption = .Name Or .Caption = "" Then
.Caption = ComboBox1.Value
Exit For
End If
End With
Next
ComboBox1.Text = ""
End Sub
Gruß Matthias
Anzeige
AW: Weitere Frage zu Combobox
01.01.2017 10:14:22
Werner
Hallo Benedikt,
erst mal noch ein gutes neues Jahr.
Zwei Möglichkeiten am Ende des Codes, nach Next:
ComboBox1.ListIndex = -1

Oder den Focus auf ein anderes Steuerelement der UserForm legen
Me.CommandButton1.SetFocus
Gruß Werner
Anzeige
Einspruch ...
01.01.2017 10:21:28
Matthias
Hallo,
auch von mir ein gutes Neues.
Zitat
Oder den Focus auf ein anderes Steuerelement der UserForm legen
Da bin ich nicht einverstanden. Den Fokus auf ein anderes Element/Objekt zu setzen
leert nicht die entsprechende ComboBox.
Gruß Matthias
AW: Einspruch ...
01.01.2017 10:29:33
Werner
Hallo Matthias,
dir natürlich auch noch ein gutes Neues Jahr.
Es ging ja eigentlich auch nicht ums leeren der ComboBox sondern:
Gibt es eine Möglichkeit nach der Auswahl des Textes,die Markierung des Textes aufzuheben?
Und das sollte doch mit dem Focus auf ein anderes Steuerelement funktionieren.
Getestet habe ich es jetzt nicht und lasse mich von dir gerne eines Besseren belehren.
Gruß Werner
Anzeige
Interpretationssache
01.01.2017 10:34:59
Matthias
Hallo
Es ging ja eigentlich auch nicht ums leeren der ComboBox
Das hab ich dann anders verstanden
So stand es im Beitrag:
Der verwendete Begriff sollte für das nächste einfügen eventuell wieder verwendet werden, der Fokus ist aber blau und der Begriff kann nicht ein zweites Mal angeklickt werden.
Gruß Matthias
Anzeige
Vielen Dank
01.01.2017 10:32:37
Benedikt
Besten Dank an euch beide
Werners Lösung ComboBox1.ListIndex = -1 ist genau das gesucht war,die Lösung von Matthias ComboBox1.Text = "" löscht jedoch den Inhalt der ganzen Combobox. Vermutlich habe ich mich zu wenig deutlich erklärt.
Ich wünsche euch alles gute im neuen Jahr
wo ist jetzt der Unterschied ?
01.01.2017 10:46:35
Matthias
Hallo
die Lösung von Matthias ComboBox1.Text = "" löscht jedoch den Inhalt der ganzen Combobox
was meinst Du wohl was Werners Lösung mit:
ComboBox1.ListIndex = -1
macht ?
Hier mal zum besseren Verständis mit beiden Varianten
https://www.herber.de/bbs/user/110277.xlsm
Gruß Matthias
Anzeige
Keiner ersichtlich... aber
01.01.2017 11:50:36
Benedikt
Vielen Dank für deine Mühe Matthias
Irgendwie bin ich wirklich nicht begnadet mit VBA, bei mir hat deine Lösung den Inhalt der Combobox leer angezeigt. Bitte um Entschuldigung.
Vielleicht kannst Du mir hier weiterhelfen:
Wie muss das Aussehen wenn Label 1 keinen Inhalt, also leer ist, das in der letzten leeren Zelle der Spalte 2 ein x steht?
Sheets("Test").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Label1
übernimmt den Inhalt des Labels, wenn das Label leer ist sollte ein x in die Zelle eingetragen werden
Anzeige
AW: Keiner ersichtlich... aber
01.01.2017 12:15:10
Werner
Hallo Benedikt,
versuch mal:
If Label1.Caption = "" Then
Sheets("Test").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = "x"
Else
Sheets("Test").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = Label1
End If
Gruß Werner
Perfekt Danke
01.01.2017 13:02:03
Benedikt
.
AW: Danke für die Rückmeldung. o.w.T.
01.01.2017 13:52:04
Werner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Inhalt von Combobox in Labels


Schritt-für-Schritt-Anleitung

Um den Inhalt einer Combobox in Labels zu übertragen, gehe wie folgt vor:

  1. Öffne deine UserForm in Excel, in der du die Combobox und Labels hast.

  2. Füge eine Combobox hinzu (z.B. ComboBox1) und 10 Labels (z.B. Label1, Label2, ..., Label10).

  3. Füge den folgenden VBA-Code in das Code-Fenster deiner UserForm ein:

    Private Sub ComboBox1_Change()
       Dim L As Long
       If ComboBox1.ListIndex = -1 Then Exit Sub
       For L = 1 To 10
           With Controls("Label" & CStr(L))
               If .Caption = .Name Or .Caption = "" Then
                   .Caption = ComboBox1.Value
                   Exit For
               End If
           End With
       Next
    End Sub
  4. Teste deine UserForm. Wähle einen Wert in der Combobox aus, und schau, wie das erste leere Label gefüllt wird.


Häufige Fehler und Lösungen

  • Fehler: Labels füllen sich nicht.

    • Lösung: Stelle sicher, dass der Code im richtigen Ereignis (ComboBox1_Change) steht und die Labels korrekt benannt sind.
  • Fehler: Keine Auswahl in der Combobox.

    • Lösung: Überprüfe, ob die Combobox mit Werten gefüllt ist. Dies kannst du in den Eigenschaften der Combobox tun.
  • Fehler: Alle Labels sind gefüllt, aber es ist keine Eingabe mehr möglich.

    • Lösung: Füge eine Bedingung hinzu, um die Eingabe in die Combobox zu verhindern, wenn alle Labels gefüllt sind:
    If Label10.Caption <> "" Then
       ComboBox1.Enabled = False
    End If

Alternative Methoden

Eine alternative Methode zur Übertragung von Werten aus einer Combobox in Labels ist die Verwendung von Dictionary-Objekten oder Collection. Diese Methoden sind besonders nützlich, wenn du die Werte dynamisch verwalten möchtest.

Hier ein einfacher Ansatz mit einer Collection:

Dim LabelCollection As New Collection

Private Sub UserForm_Initialize()
    For L = 1 To 10
        LabelCollection.Add Controls("Label" & L)
    Next L
End Sub

Private Sub ComboBox1_Change()
    Dim L As Long
    If ComboBox1.ListIndex = -1 Then Exit Sub
    For L = 1 To LabelCollection.Count
        If LabelCollection(L).Caption = "" Then
            LabelCollection(L).Caption = ComboBox1.Value
            Exit For
        End If
    Next L
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Combobox und Labels verwenden kannst:

  • Beispiel für 2 Comboboxen: Wenn du eine zweite Combobox (ComboBox2) einrichten möchtest, kannst du die gleiche Logik wie oben verwenden, aber die Schleife anpassen:

    Private Sub ComboBox2_Change()
       Dim L As Long
       If ComboBox2.ListIndex = -1 Then Exit Sub
       For L = 11 To 20
           With Controls("Label" & CStr(L))
               If .Caption = .Name Or .Caption = "" Then
                   .Caption = ComboBox2.Value
                   Exit For
               End If
           End With
       Next
    End Sub
  • Beispiel für das Leeren der Auswahl: Um den Fokus auf ein anderes Steuerelement zu legen und die Auswahl in der Combobox aufzuheben, kannst du Folgendes hinzufügen:

    Me.CommandButton1.SetFocus
    ComboBox1.ListIndex = -1

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Nutze Fehlerbehandlung in deinem Code, um sicherzustellen, dass dein Programm auch bei unerwarteten Eingaben funktioniert. Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Mit Application.EnableEvents = False kannst du verhindern, dass Ereignisse während der Ausführung deines Codes ausgelöst werden. Vergiss nicht, es am Ende wieder auf True zu setzen.


FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass die Combobox nach der Auswahl leer bleibt? Du kannst den Code ComboBox1.ListIndex = -1 verwenden, um die Auswahl aufzuheben, ohne den Inhalt der Combobox zu löschen.

2. Was passiert, wenn alle Labels gefüllt sind? Du kannst eine Bedingung hinzufügen, um die Combobox zu deaktivieren, wenn alle 10 Labels gefüllt sind. Beispiel:

If Label10.Caption <> "" Then
    ComboBox1.Enabled = False
End If

3. Ist es möglich, die Auswahl in der Combobox zurückzusetzen? Ja, du kannst ComboBox1.ListIndex = -1 verwenden, um die Auswahl zurückzusetzen, ohne den Inhalt zu löschen.

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