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

Combo-Box mit Enter-Taste verlassen

Forumthread: Combo-Box mit Enter-Taste verlassen

Combo-Box mit Enter-Taste verlassen
Gestrich
Guten Abend,
mein Name ist Thomas, meine VBA-Kenntnisse sind maßvoll. Ich bitte um folgende Hilfestellung.
Ich möchte dem Anwender die Möglichkeit geben, nach Eintrag einer Zahl in eine Combo-Box das Element mit der Enter-Taste zu verlassen, was mir nicht zu gelingt einzustellen.
Zur Zeit habe ich das Element direkt ins Tabellenblatt eingefügt, also keine userform benutzt.
Für eine Unterstützung wäre ich dankbar.
Beste Grüße
Thomas
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
09.11.2009 19:22:36
Original
Hi,
verlassen, aber wohin?
Das geht mit dem Keydown-Ereignis.
mfg Kurt
AW: Combo-Box mit Enter-Taste verlassen
09.11.2009 23:00:34
Gestrich
Hallo Orignal Kurt,
danke für die schnelle Reaktion - und ich muß mich präzisieren.
Nach dem Drücken der Enter-Taste soll wieder das Tabellenblatt aktiviert sein.
Mein Versuch, die KeyDown-Methode anzuwenden, scheiterte daran, daß die Combo-Box bereits nach dem ersten Zeichen wieder verlassen wurde (das KeyPress-Verfahren habe ich ebenfalls erfolglos probiert).
Oder ich habe beim Codieren der Methode einen Fehler gemacht ...
Beste Grüße
Thomas
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 07:37:51
xr8k2
Hallo Thomas,
was für Ereignisse hast du denn noch an deine ComboBox gebunden (wenn du sagst, dass die Box nach dem 1. Zeichen wieder verlassen wird)? Zeig mal den gesamten Ereigniscode für das Element.
Gruß,
xr8k2
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 17:16:26
Gestrich
Hallo xr8k2,
Ich habe (im letzten Versuch) ein Change-Ereignis an die Combo-Box gehängt.
Unter Eigenschaften führt ListFillRange in der Tabelle einen Verweis auf vier aufeinanderfolgende Zellen; die erste ist leer. Ebenfalls ist D39 als LinkedCell angegeben.
Die Combo-Box ist nicht in eine userform integriert, sondern liegt direkt auf der Tabelle.
Hier der Code:
Private Sub ComboBox1_Change()
' Beim Aufruf soll erste Zeile aktiviert werden
ComboBox1.ListIndex = 0
' Falls in erster Zeile ein Wert steht, soll alles
' markiert sein (15 Stellen sind mehr als ausreichend)
ComboBox1.SelStart
ComboBox1.SelLength = 15
' Wert soll in der Tabelle, konvertiert als Zahl, abgelegt werden
Tabelle17.Range("D39").Value = Cdbl (ComboBox1.Value)
' In der Combo-Box soll Wert als Dezimalzahl mit Tsder-Pkt. angezeigt werden
ComboBox1.Value = Format(ComboBox1.Value, "##,##0.00")
' Enter-Taste soll zur Tabelle führen
If KeyCode = 13 Then
Unload ComboBox1
Tabelle17.Range("D42").Select
End If
End Sub
Guter Gruß
Thomas
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 14:06:39
Original
Hi,
ins aktive Blatt also, dort eine bestimmte Zelle, ev. die, die vor Betreten der Combobox aktiv war?
Wichtig wäre auch, ob eine Validierung bezüglich der Länge der Eingabe stattfinden soll.
mfg Kurt
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 17:21:34
Gestrich
Hi Kurt,
ich habe Code und ergänzende Angaben als Antwort auf einen Beitrag von xr8k2 ins Forum gestellt.
Dennoch zu Deinen Nachfragen: Combo-Box liegt direkt im aktiven T.-Blatt. Nach Verlassen soll wieder eine Zelle in jenem Blatt aktiv sein. Eine Längenvalidierung muß m. E. nicht stattfinden. Ich habe (erfolglos) versucht, bis zu max. 15 Zeichen in der Combo-Box über SelLength zu markieren.
Guter Gruß
Thomas
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 17:37:38
Original
Hi,
lad mal besser ein kleines Beispiel hoch, deine Beschreibung ist etwas unklar.
mfg Kurt
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 18:03:57
Gestrich
Hi Kurt,
hier das Beispiel. Im Blatt "Lies_das" noch ergänzende Angaben.
Gruß
Thomas
P. S.: Habe noch nie in diesem Forum eine Datei hochgeladen. Eine meldung sagte mir, ich solle einen Namen in die Meldung kopieren. Hier 'isse:
https://www.herber.de/bbs/user/65738.xls
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 22:16:13
Original
Hi,
so richtig versteh ich das trotz des Beispiels nicht.
Mal prinzipiell, wenn eine Box per ListFillRange gefüllt wird, ist sie an die Datenquelle
gebunden und kann nicht geändert werden, es sei denn, die zu Grunde liegenden Zellen
werden geändert.
In deinem Fall müüste die Box per AddItem gefüllt werden, um die individuelle Eingabe
zu ermöglichen. Die LinkedCell muss auch entfallen und der Wert stattdessen im Click-
oder Change-Ereignis übergeben werden, damit er in eine Zahl gewandelt werden kann.
Eine Validation auf Zahlewerte ist ebenfalls nötig, weil es ansonsten zu Fehlern kommt,
da bekanntlich die Werte aus der Box zunächt mal Texte sind, auch wenn sie numerisch sind,
kurz, es muss sichergestellt werden, dass nur Zahlen und ggf. ein Komma eingegeben werden kann.
Zu allem findest du genügend im Archiv.
Das Verlassen kann dan im gesonderten Ereignis KeyDown passieren.
mfg Kurt
Anzeige
AW: Combo-Box mit Enter-Taste verlassen
10.11.2009 23:34:49
Gestrich
Hi Kurt,
danke für feedback.
Wesentlich für mich ist vermutlich der Hinweis mit dem AddItem. das muß ich mir dann aneignen.
Die übrigen Dinge weiß ich direkt umzusetzen.
Eine Frage aber bleibt zu Deinem letzten Satz: Muß ich zwei Subs (die letzte, verbunden mit dem KeyDown-Ereignis) erstellen oder soll alles in einer Sub stehen, die durch ein KeyDown ausgelöst wird?
Gruß
Thomas
Anzeige
;
Anzeige

Infobox / Tutorial

Combo-Box mit Enter-Taste verlassen


Schritt-für-Schritt-Anleitung

Um eine Combo-Box in Excel zu erstellen, die mit der Enter-Taste verlassen werden kann, befolge diese Schritte:

  1. Combo-Box hinzufügen:

    • Wechsle in Excel zu dem Arbeitsblatt, in dem Du die Combo-Box einfügen möchtest.
    • Gehe zu „Entwicklertools“ und wähle „Einfügen“.
    • Wähle die „Combo-Box (Formularsteuerelement)“ aus und ziehe sie auf das Arbeitsblatt.
  2. Ereigniscode hinzufügen:

    • Klicke mit der rechten Maustaste auf die Combo-Box und wähle „Code anzeigen“.
    • Füge den folgenden VBA-Code ein, um das Verhalten bei Drücken der Enter-Taste zu steuern:
    Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
       If KeyCode = vbKeyReturn Then
           ' Hier wird die Zelle aktiviert, die Du willst
           Tabelle17.Range("D42").Select
       End If
    End Sub
  3. Testen:

    • Schließe den VBA-Editor.
    • Gib einen Wert in die Combo-Box ein und drücke die Enter-Taste, um zu überprüfen, ob das gewünschte Verhalten eintritt.

Häufige Fehler und Lösungen

  • Combo-Box schließt sich zu früh: Wenn die Combo-Box nach dem ersten Zeichen schließt, könnte das an einem Change-Ereignis liegen. Stelle sicher, dass Du den richtigen Code im KeyDown-Ereignis verwendest.

  • Eingabe wird nicht als Zahl erkannt: Wenn Du eine Validierung benötigst, stelle sicher, dass Du den Wert korrekt konvertierst. Verwende Cdbl, um sicherzustellen, dass der Wert als Zahl interpretiert wird.


Alternative Methoden

Falls Du keine Combo-Box nutzen möchtest, gibt es Alternativen:

  1. Datenüberprüfung: Du kannst Zellen mit Datenüberprüfung nutzen, um eine Dropdown-Liste zu erstellen. Diese hat jedoch keine Interaktion mit der Enter-Taste.

  2. UserForms: Entwickle eine UserForm mit einer Combo-Box. In UserForms kannst Du die Ereignisse flexibler steuern, was mehr Kontrolle über die Benutzererfahrung bietet.


Praktische Beispiele

Hier ist ein einfaches Beispiel für den Code einer Combo-Box, der die Enter-Taste behandelt:

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Then
        ' Wert in Zelle speichern
        Tabelle17.Range("D39").Value = Cdbl(ComboBox1.Value)
        ' Zelle aktivieren
        Tabelle17.Range("D42").Select
    End If
End Sub

In diesem Beispiel wird beim Drücken der Enter-Taste der Wert aus der Combo-Box in Zelle D39 geschrieben und die Zelle D42 aktiviert.


Tipps für Profis

  • AddItem-Methode verwenden: Wenn Du individuelle Eingaben in der Combo-Box zulassen möchtest, verwende die AddItem-Methode, um Werte zur Combo-Box hinzuzufügen.

  • Ereignis-Kontrolle: Achte darauf, dass Du die Ereignisse nicht zu stark miteinander verknüpfst. Halte den Code für KeyDown und Change sauber getrennt, um unerwartete Verhaltensweisen zu vermeiden.


FAQ: Häufige Fragen

1. Warum funktioniert die Enter-Taste nicht?
Überprüfe, ob Du den richtigen Code im KeyDown-Ereignis verwendet hast und dass die Combo-Box richtig konfiguriert ist.

2. Wie kann ich sicherstellen, dass nur Zahlen eingegeben werden?
Nutze eine Validierung im Change-Ereignis, um sicherzustellen, dass nur numerische Eingaben akzeptiert werden.

3. Kann ich die Combo-Box auch in einer UserForm verwenden?
Ja, die Verwendung in einer UserForm bietet mehr Flexibilität und Kontrolle über die Benutzeroberfläche.

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