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

Forumthread: Combobox Change-Ereignis

Combobox Change-Ereignis
01.08.2014 13:34:58
Jürgen
Hallo,
ich habe einer Combobox eine Rowsource von 10 Werten zugeordnet. Wird ein Wert ausgewählt, wird über das Change-Ereignis dieser Wert in eine Zelle geschrieben. Funktioniert prima, solange ich immer einen unterschiedlichen Wert auswähle. Aber es kommt auch der Fall vor, dass der gleiche Auswahlwert 2 oder 3mal hintereinander ausgewählt werden soll. Dann funktioniert die combobox1_Change() Prozedur natürlich nicht, weil ja keine Veränderung eingetreten ist.
Hat jemand eine Idee, wie ich trotzdem gleiche Werte hintereinander aus einer Combobox übernehmen kann?
Liebe Grüße
Jürgen

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox Change-Ereignis
01.08.2014 14:20:24
Tino
Hallo,
also bei mir wird Change Ereignis ausgeführt sobald sich der Index der Auswahl ändert
auch wenn dies immer derselbe Inhalt ist?!
Gruß Tino

AW: Combobox Change-Ereignis
01.08.2014 14:28:49
{Boris}
Hi,
bei mir das Event auch nicht nochmal ausgelöst.
Bin jetzt kein VBA-Experte - aber ich würde das so in der Art lösen:
Option Explicit
Public Bol As Boolean
Private Sub ComboBox1_Change()
If Not Bol Then
Range("B1") = Me.ComboBox1.Value
MsgBox "Huhu!"
End If
Bol = True
Me.ComboBox1.Value = ""
Bol = False
End Sub
Nicht besonders sauber, aber es funktioniert ;-)
VG, Boris

Anzeige
AW: Combobox Change-Ereignis
01.08.2014 14:30:15
Robert
Hallo Jürgen,
Warum schreibst du den Wert über das Combobox_Change Ereignis in die Zeile?
Was passiert wenn man sich da mal verklickt? Falscher Wert?
Normalerweise macht man eine Dropdownauswahl in einer Combobox und einen Button, der dann mit dem ausgewählten Wert irgendwas anstellt.
Wenn du weiterhin aktivieren willst sobald das Dropdown benutzt wird(auch ohne Änderung), dann kannst du stattdessen Combobox_DropDownClosed verwenden.
Ist aber genauso für ein "Verklicken" anfällig.
Viele Grüße
Robert

Anzeige
AW: Combobox Change-Ereignis
01.08.2014 14:37:13
fcs
Hallo Jürgen,
du kannst zusätzlich den Doppelklick der Maus verwenden, um einen ausgewählten Wert nochmals in die Tabelle einzutragen.
Gruß
Franz
Beispiel:
Private Sub Combobox1_Auswerten()
If Me.ComboBox1.ListIndex > -1 Then
With Worksheets("h001")
.Cells(.Rows.Count, 5).End(xlUp).Offset(1, 0).Value = Me.ComboBox1.Value
End With
Else
MsgBox "Bitte erst Wert in Combobox auswählen"
End If
End Sub
Private Sub ComboBox1_Change()
Call Combobox1_Auswerten
End Sub
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Call Combobox1_Auswerten
End Sub

Anzeige
AW: Combobox Change-Ereignis
01.08.2014 15:55:12
Jürgen
Danke für eure Tipps. Der mit dem Doppelklick gefällt mir ganz gut, ebenso der, einen zusätzl. Button zur Datenübernahme einzurichten.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Combobox Change-Ereignis in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Combobox Change-Ereignis in Excel VBA optimal zu nutzen und auch bei mehrfacher Auswahl derselben Werte zu reagieren, befolge diese Schritte:

  1. Öffne deine Excel-Datei und gehe zum VBA-Editor (Alt + F11).

  2. Füge ein UserForm hinzu und platziere eine ComboBox darauf.

  3. Klicke mit der rechten Maustaste auf die ComboBox und wähle Code anzeigen.

  4. Verwende den folgenden Code, um das Change-Ereignis zu implementieren:

    Option Explicit
    Public Bol As Boolean
    
    Private Sub ComboBox1_Change()
       If Not Bol Then
           Range("B1") = Me.ComboBox1.Value
           MsgBox "Wert übernommen: " & Me.ComboBox1.Value
       End If
       Bol = True
       Me.ComboBox1.Value = ""
       Bol = False
    End Sub
  5. Schließe den VBA-Editor und teste die ComboBox im UserForm.


Häufige Fehler und Lösungen

Problem: Das Change-Ereignis wird nicht ausgelöst, wenn der gleiche Wert ausgewählt wird.

Lösung: Nutze eine zusätzliche Variable (wie Bol im obigen Beispiel), um die Logik zu steuern und die Auswahl erneut zu verarbeiten.

Problem: Falscher Wert in die Zelle geschrieben.

Lösung: Stelle sicher, dass du das Change-Ereignis nicht direkt zum Schreiben in die Zelle verwendest. Ein alternativer Lösungsansatz ist die Verwendung eines Buttons oder das Doppelklick-Ereignis.


Alternative Methoden

  • Doppelklick verwenden: Du kannst das Doppelklick-Ereignis nutzen, um einen Wert erneut in die Zelle zu schreiben. Hier ist ein Beispiel dafür:

    Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       Range("B1") = Me.ComboBox1.Value
       MsgBox "Wert erneut übernommen: " & Me.ComboBox1.Value
    End Sub
  • Button für Datenübernahme: Erstelle einen Button, um die Auswahl zu bestätigen und den Wert zu übernehmen. Das könnte folgende Struktur haben:

    Private Sub CommandButton1_Click()
       If Me.ComboBox1.ListIndex > -1 Then
           Range("B1") = Me.ComboBox1.Value
           MsgBox "Wert übernommen: " & Me.ComboBox1.Value
       Else
           MsgBox "Bitte einen Wert auswählen."
       End If
    End Sub

Praktische Beispiele

Hier sind einige Anwendungsbeispiele für das Combobox Change-Ereignis:

  1. Wert in Zelle schreiben bei Auswahl:

    Private Sub ComboBox1_Change()
       Range("B1") = Me.ComboBox1.Value
    End Sub
  2. Wert bei Doppelklick wiederholen:

    Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       Range("B1") = Me.ComboBox1.Value
    End Sub
  3. Kombination von Doppelklick und Button:

    Private Sub CommandButton1_Click()
       Call ComboBox1_DblClick(Cancel:=False)
    End Sub

Tipps für Profis

  • Nutze Error Handling in deinen VBA-Prozeduren, um mögliche Laufzeitfehler zu vermeiden.
  • Verwende Data Validation in Excel, um sicherzustellen, dass nur gültige Werte in die ComboBox gelangen.
  • Experimentiere mit ListBoxen als Alternative zur ComboBox, wenn du mehrere Auswahlmöglichkeiten benötigst.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox mit Werten füllen?
Du kannst die ComboBox in der UserForm_Initialize-Prozedur mit Werten füllen, zum Beispiel:

Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .AddItem "Wert 1"
        .AddItem "Wert 2"
        .AddItem "Wert 3"
    End With
End Sub

2. Was sind die häufigsten Fehler beim Arbeiten mit ComboBoxen in VBA?
Fehler entstehen oft durch falsches Handling des Change-Ereignisses oder durch unzureichende Validierung der Benutzereingaben. Achte darauf, dass du immer die richtigen Indizes und Werte verwendest.

3. Wie kann ich den Wert in einer anderen Zelle speichern?
Einfach den Bereich im Code anpassen, in den du den Wert speichern möchtest, wie z.B. Range("C1") statt Range("B1").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige