Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
696to700
696to700
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"escape" Funktion in VBA

"escape" Funktion in VBA
15.11.2005 10:30:26
Tinu
Liebe VBA-Spezialisten
In einer UserForm möchte ich einer bestimmten Schaltfläche die Funktion der "Escape"-Taste zuweisen. Kann mir jemand den entsprechenden Code verraten?
Für Euere Hilfe wäre ich sehr dankbar
Gruss
Tinu

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "escape" Funktion in VBA
15.11.2005 10:45:25
u_
Hallo,
Application.SendKeys ("{ESC}")
Gruß
Geist ist geil!
AW: "escape" Funktion in VBA
15.11.2005 11:13:29
Tinu
Hallo u_
Danke für die schnelle Antwort. Leider hat aber der Code nicht die gleiche Wirkung, wie die esc Taste. Ich denke, ich muss genauer beschreiben, was ich machen will:
In einer UserForm habe ich ComboBoxen. Wenn hier manuell etwas reigeschrieben wird, erscheint beim nächsten Click die Fehlermeldung "invalid property value". Wenn diese quittiert wird, steht der ungültige Eintrag immer noch in der ComboBox und der Vorgang wiederholt sich. Es gibt nur zwei Methoden, aus dieser Situation rauszukommen; die ComboBox zu löschen, oder die esc. Taste zu drücken. Wenn die esc Taste gedrückt wird, wird auch der Eintrag in der ComboBox gelöscht. Die Möglichkeit, die esc Taste zu drücken, ist aber den meisten Usern nicht bekannt. Daher möchte ich eine Schaltfläche in das UserForm einbauen, welche genau die gleiche Wirkung hat wie die esc Taste. Das funktioniert jedoch mit "Application.SendKeys ("{ESC}")" nicht.
Gruss
Tinu
Anzeige
AW: "escape" Funktion in VBA
15.11.2005 11:44:51
Erich
Hallo Tinu,
die Fehlermeldung "invalid property value" lässt vermuten, dass der Fehler mit der ComboBox wenig zu tun hat. Du versuchst wohl irgendwo später, einer Eigenschaft einen ungültigen Wert zuzuweisen. Hier tritt der Fehler auf, und hier sollstest du ihn abfangen und per VBA den falschen Wert in der CB löschen.
Besser könnrest du schon mittels CB-Ereignis die Eingabe prüfen und ungültige Werte von vornherein ablehnen. Dann hast du die Kontrolle und lässt nicht Excel/VBA einen Fehlerhinweis produzieren.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: "escape" Funktion in VBA
15.11.2005 11:55:59
Matthias
Deine Idee mit der Schaltfläche funktioniert aus folgendem Grund nicht: Wenn die Schaltfläche angeklickt wird, versucht das System, ihr den Focus zu geben und fordert die Combobox auf, den Focus herzugeben. Diese gibt den Focus aber nicht her, weil die Feldprüfung gemäß Einstellung der Eigenschaft MatchRequired = TRUE auf einen Wert aus der Liste besteht.
Wenn man [ESC] betätigt, kann man das Feld trotzdem mit dem ungültigen Wert verlassen. Das ist aber nicht der Sinn der Feldprüfung.
Wenn andere Werte als die in der Liste zulässig sind, stelle die "MatchRequired"-Eigenschaft der Combobox auf FALSE. Dann werden alle Werte ohne Meldung akzeptiert. Willst du nicht in der Liste enthaltene Werte zwar akzeptieren, aber einen Hinweis ausgeben, wirst du um VBA-Code nicht herumkommen: Du müsstest dann die Feldprüfung im AfterUpdate-Event der Combobox selbst programmieren (Prüfung, ob Wert in der Liste, Warnhinweis, wenn nicht).
Eine billige "Lösung" wäre es, im ControlTipText den User auf die ESC-Taste hinzuweisen (find' ich aber sehr unelegant).
Gruß Matthias
Anzeige
AW: "escape" Funktion in VBA
15.11.2005 14:44:50
Tinu
Hallo Erich und Matthias
Besten Dank für Euere Antworten.
MatchRequired = TRUE ist ein Muss bei meiner Anwendung. Die UserForm enthält mehrere ComboBoxen, wobei die nächste jeweils in Abhängigkeit der vorhergehenden mit Werten zur Auswahl geladen wird. Was ich nun eigentlich erreichen möchte ist, dass keine "manuellen" Einträge in die ComboBoxen gemacht werden können Es sollen nur die Werte im Dropdown Menu angewählt werden können). Da ich dazu keine Lösung gefunden habe, wollte ich wenigstens einen Ausweg finden für diejenigen, welche in die ComboBoxen hineingeschrieben haben. Wenn man den Ausweg mit der esc Taste nicht kennt, dann bleibt man hängen.
Gibt es vielleicht eine Möglichkeit, die ComboBoxen für die manuelle Eingabe zu sperren, die Eingabe über das Dropdown-Fenster aber zuzulassen?
Gruss
Tinu
Anzeige
AW: "escape" Funktion in VBA
15.11.2005 15:47:31
Erich
Hallo Tino,
ja die Möglichkeit gibt es. Du kannst die Style-Eigenschaft einer ComboBox festlegen als
fmStyleDropDownCombo:
"Das Kombinationsfeld-Steuerelement verhält sich wie ein Dropdown-Kombinationsfeld. Der Benutzer kann einen Wert im Bearbeitungsbereich eingeben oder einen Wert aus der Dropdown-Liste auswählen (Voreinstellung(!!!))."
oder
fmStyleDropDownList
"Das Kombinationsfeld-Steuerelement verhält sich wie ein Listenfeld. Der Benutzer muss einen Wert aus der Liste auswählen."
(Zitate aus der VBA-Hilfe)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: "escape" Funktion in VBA
15.11.2005 16:55:10
Tinu
Hallo Erich
Super, genau das löst mein Problem :))
Nochmals vielen Dank
Grüsse aus der Schweiz
Tinu
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge