Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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
Inhaltsverzeichnis

Makro: Wie prüfen, ob die Leertaste gedrückt wurde

Makro: Wie prüfen, ob die Leertaste gedrückt wurde
wonder
Hallo,
ich möchte gerne während ein Makro läuft, prüfen, ob der User die Leerzeichen-Taste auf der Tastatur gedrückt hat.
Sobald diese Taste gedrückt wurde, soll der Inhalt der Variablen "Antwort" in die Zelle A7 geschrieben werden.
Wenn ich nun das unten genannte Coding mit "keyascii" verwende, wird komischerweise nichts in die Zelle A7 geschrieben aber in eine MsgBox (die eigentlich weiter unten im Coding auftaucht).
Ich verwende Excel 2007 und VB 6.5.
Es wäre toll, wenn jemand einen Tipp für mich hätte.
Danke und viele Grüße
Stefan
Foglende Coding klappt leider nicht:
If KeyAscii = 32 Then ' 32 ist der dezimale ASCII-Code für die Leertaste
Worksheets(3).Cells(7, 1) = antwort
End If
AW: Makro: Wie prüfen, ob die Leertaste gedrückt wurde
12.10.2010 12:31:02
Tino
Hallo,
da wären ein bar Infos mehr nötig.
Wann soll diese Leertaste abgefangen werden?
Wenn der Code läuft? Wie ist der Code aufgebaut?
Wenn der User in eine Zelle schreibt oder, oder ...?
Ein grobes Beispiel für einen Code der in einer Schleife läuft.
Private Declare Function GetAsyncKeyState Lib "user32" _
        (ByVal vKey As Long) As Integer
        
Private Const Key_Leer& = &H20
Function CompKey(KCode&) As Boolean
Dim Result%
    
Result = GetAsyncKeyState(KCode)
CompKey = Result = -32767

End Function

Sub test()

Do While Not CompKey(Key_Leer)

Loop

DoEvents
MsgBox "Leer gedrückt"
End Sub
Gruß Tino
Anzeige
AW: Makro: Wie prüfen, ob die Leertaste gedrückt wurde
12.10.2010 13:11:29
wonder
Hallo Tino,
vielen Dank für Deine Info.
Es handelt sich um ein ganz einfaches Progrämmchen, das wie folgt läuft:
Makro wird gestartet und schreibt eine Info in die Zelle A6.
Während das Makro immer noch läuft soll, etzt der User durch Drücken der Leertaste dafür sorgen, das eine weitere Info in die Zelle A7 geschrieben wird.
Daher dachte ich, das ich durch die einfache Abfrage von (IF KeyAscii =32) das Schreiben der Info in Zelle A7 auslösen kann. Das klappt aber leider nicht.
Ich hoffe, dass es hier einen einfachen Befehl, wie etwa KeyAscii oder KeyPress gibt, sodass eine ganz einfache IF-Abfrage reicht.
Wäre für einen Tipp von Dir sehr dankbar.
Viele Grüße, Stefan
Anzeige
AW: Makro: Wie prüfen, ob die Leertaste gedrückt wurde
12.10.2010 13:27:41
Tino
Hallo,
so einfach ist es nicht während ein Code läuft, da gibt es keine direkten Events.
Am einfachsten wäre es erst mal wenn Du an bestimmten Punkten im Code dies mit einbaust.
Beispiel:
Private Declare Function GetAsyncKeyState Lib "user32" _
        (ByVal vKey As Long) As Integer
        
 Const Key_Leer& = &H20

Function CompKey(KCode&) As Boolean
Dim Result%
    
Result = GetAsyncKeyState(KCode)
CompKey = Result = -32767

End Function

Sub Dein_Programm()
    'Code 
    '... 
    If CompKey(Key_Leer) Then Range("A7") = Antwort
    'Code 
    '... 
    If CompKey(Key_Leer) Then Range("A7") = Antwort
    'Code 
    '... 
    If CompKey(Key_Leer) Then Range("A7") = Antwort
    'Code 
    '... 
    If CompKey(Key_Leer) Then Range("A7") = Antwort
    'Code 
    '... 
End Sub
Aufwendiger könnte man was mit einem Api- Timer versuchen,
ob dies Excel verkraftet habe ich noch nicht getestet.
Wenn dies oben Dir nicht hilft, kann ich mal versuchen ein Beispiel aufzubauen,
wenn es funktionieren sollte wie ich es mir denke.
Gruß Tino
Anzeige
AW: Makro: Wie prüfen, ob die Leertaste gedrückt wurde
12.10.2010 14:30:38
wonder
Hallo Tino,
danke für Dein Coding. Ich hab's gerade ausprobiert, hat aber leider auch nicht funktioniert.
Langsam dämmert mir, dass die einfache Abfage (IF KeyAscii=32) wohl deshalb nicht funktioniert, weil er beim Erreichen dieser Codingzeile blitzschnell feststellt, dass momentan (noch) niemand die Leer-Taste gedrückt hat. Damit ist die IF-Bedingung nicht erfüllt und er springt in die nächste Zeile des Codings.
Was ich bräuchte ist ein VB-Befehl in der Art "Warte auf eine Tastatur-Eingabe".
Kennst Du hier einen Befehl?
Kann das evtl. das Event "KeyPress" leisten?
Danke und viele Grüße
Stefan
Anzeige
AW: Makro: Wie prüfen, ob die Leertaste gedrückt wurde
12.10.2010 15:18:43
Tino
Hallo,
ich weiß nicht was Dein Code alles so machen soll, auf alle fälle ist es gundsätzlich möglich.
Wie man es aber in Deinen Code geschickt einbaut kann ich ohne die Datei nicht sagen.
https://www.herber.de/bbs/user/71870.xls
Gruß Tino

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige