Microsoft Excel

Herbers Excel/VBA-Archiv

SendKeys in falscher Zelle

Betrifft: SendKeys in falscher Zelle von: Alexander
Geschrieben am: 14.09.2020 15:15:01

Hallo zusammen,

ich habe nun schon einige Zeit versucht, mein Problem mit SendKeys auch mit Hilfe von Google zu lösen, allerdings ohne Erfolg.

Ich habe eine Tabelle mit einer Zelle für die eine Datenvalidierung existiert. Per VBA habe ich realisiert, dass der User nur in die Zelle klicken muss (SendKeys "%(DOWN)"), damit dass Dropdown kommt (vermeidet einen zusätzlichen Klick).

Bei Änderung der Auswahl wird eine Change-Ereignis ausgelöst, dass eine andere Zelle auswählt. Bis hierhin funktioniert auch alles. Klick der User aber in die Zelle und drückt nach Anzeige der Auswahlliste ESCAPE und editiert den Wert in der Zelle per F2 manuell, so wird auch die Zielzelle ausgewählt aber auch dort SendKeys ausgeführt und damit eine (leere) Dropdown-Liste angezeigt (siehe auch beigefügte Beispieldatei).

Gibt es eine Möglichkeit, dass zu verhindern?

Viele Grüße,

Alex

Betrifft: AW: SendKeys in falscher Zelle
von: Alexander
Geschrieben am: 14.09.2020 15:22:39

Hier noch die Beispieldatei.

https://www.herber.de/bbs/user/140221.xlsm

Betrifft: AW: SendKeys in falscher Zelle
von: ChrisL
Geschrieben am: 14.09.2020 15:46:37

Hi Alex

Ich konnte dein Problem nur rekonstruieren, wenn ich eine fehlerhafte Eingabe tätige z.B. "XXX" und dann "Wiederholen" bzw. "Abbrechen" drücke. Nach meiner Interpretation wird durch die Fehleingabe das Change-Ereignis erneut ausgelöst, jedoch kann SendKeys aufgrund der offenen Fehlermeldung nicht abgeschickt werden und damit erscheint es dann irgendwie verzögert, sobald der Change erfolgreich abgeschlossen wird.

Vielleicht funktioniert es hiermit:
Public rng As Range

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("$I$5").Address Then
    On Error Resume Next
    Application.EnableEvents = False
    Cells(1, 9).Activate
    Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not rng Is Nothing And Target.Address = "$I$5" Then _
    If rng.Address = "$I$5" Then Exit Sub
Set rng = Target
Select Case Target.Address
    Case Range("$I$5").Address
        SendKeys "%{DOWN}", True
End Select
End Sub
cu
Chris

Betrifft: AW: SendKeys in falscher Zelle
von: Alexander
Geschrieben am: 14.09.2020 15:55:31

Hallo Chris,

schon mal danke für Deine Antwort. Obgleich ich sie nicht ganz verstehe. Das Beispiel "funktioniert" wie beschrieben ohne Fehleingaben. Schreibe ich manuell in die Auswahlzelle z.B. "B" dann wird SendKeys in der Zielzelle ausgeführt. Habe in der Zwischenzeit im SelectionChange-Ereignis am Anfang noch EnableEvents=False und am Ende wieder auf True eingebaut. Allerdings mit gleichem Ergebnis.

Viele Grüße,

Alex

Betrifft: AW: SendKeys in falscher Zelle
von: Alexander
Geschrieben am: 14.09.2020 16:00:50

Zusätzlich habe ich noch herausgefunden, dass bei manueller Eingabe zunächst (logischerweise) das Change-Ereignis ausgelöst wird. Darin wird die Zielzelle aktiviert, das löst wiederum das SelectionChange-Ereignis in der Zielzelle aus. Soweit so gut. Und jetzt wird es interessant, danach wird noch mal SelectionChange ausgeführt aber nun in der Auswahlzelle. Und dadurch auch SendKeys. Und das verstehe ich nicht.

Betrifft: AW: SendKeys in falscher Zelle
von: ChrisL
Geschrieben am: 14.09.2020 16:11:37

Hi Alex

Es scheint wir haben unterschiedliche Ausgangslagen. Excel-Version stimmt überein, dann muss es an der Datei liegen. Jedenfalls enthält die Musterdatei in I1 gar keine Gültigkeitsprüfung (die habe ich mir zu Testzwecken selber eingefügt).

Hast du den Code getestet?
Eigentlich sollte dieser generell verhindern (Fehleingabe hin oder her), dass SendKeys zweifach ausgeführt wird, bevor nicht ein Wechsel der Selektion stattgefunden hat.

Ansonsten bitte die Frage wieder als offen kennzeichnen, da ich das Problem wie von dir beschrieben nicht rekonstruieren kann.

cu
Chris

Betrifft: AW: SendKeys in falscher Zelle
von: Alexander
Geschrieben am: 14.09.2020 16:35:11

Hallo Chris,

sorry, dann habe ich die Ausgangslage wohl nicht eindeutig erklärt. In der Zielzelle I1 gibt es keine Auswahlliste, nur in I5. Das Verhalten tritt wie folgt auf:

- Klick in I5, es öffnet sich das Dropdown
- Escape drücken
- manuell in I5 einen gültigen Wert (A,B oder C) eingeben
- I1 wird aktiviert und dort ein leeres Dropdown angezeigt

Viele Grüße,

Alex

Betrifft: AW: SendKeys in falscher Zelle
von: ChrisL
Geschrieben am: 14.09.2020 16:44:48

Hi Alex

- I1 wird aktiviert und dort ein leeres Dropdown angezeigt
Dieses leere Dropdown kommt bei mir nicht.

Sorry, bin mit meinem Latein am Ende.

cu
Chris

Betrifft: AW: SendKeys in falscher Zelle
von: Alexander
Geschrieben am: 14.09.2020 16:52:12

Hallo Chris,

kein Problem, trotzdem danke für Deine Zeit. Ich habe es mittlerweile auch aufgegeben und zumindest eine Möglichkeit gefunden, das Problem zu umgehen. Heute schon viel zu viel Zeit in das Thema investiert... :-)

Viele Grüße,

Alex

Beiträge aus dem Excel-Forum zum Thema "SendKeys in falscher Zelle"