erkennen, wie die aktive Zelle gewechselt wird

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: erkennen, wie die aktive Zelle gewechselt wird
von: John
Geschrieben am: 21.03.2005 11:57:45
Hallo zusammen,
kann mir jemand sagen, wie ich Excel erkennen lassen kann, wie die aktive Zelle gewechselt wird?
Wenn ich den Fokus z. B. von Zelle A5 nach A6 wechseln will, kann ich das ja entweder per Mausklick oder per Cursortaste tun. Ist es möglich, Excel erkennen zu lassen, wie die Zelle gewechselt wurde?
Ich denke mal, es müßte irgendwie innerhalb des Worksheet_SelectionChange-Makros zu spezifizieren sein...
Vielen Dank im Voraus!
Gruß,
John

Bild

Betrifft: AW: erkennen, wie die aktive Zelle gewechselt wird
von: Matthias G
Geschrieben am: 21.03.2005 12:35:41
Hallo John,
das geht m.W. nur, wenn du die Cursortasten mit Application.OnKey "nachbaust" und eine globale Variable benutzt:
In "DieseArbeitsmappe":
Option Explicit
Private Sub Workbook_Activate()
TastenEin
End Sub
Private Sub Workbook_Deactivate()
TastenAus
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Not Crsr Then MsgBox "Klick"
End Sub

In ein Modul:
Option Explicit
Public Crsr As Boolean
Sub TastenEin()
Application.OnKey "{LEFT}", "NachLinks"
Application.OnKey "{RIGHT}", "NachRechts"
Application.OnKey "{UP}", "NachOben"
Application.OnKey "{DOWN}", "NachUnten"
End Sub
Sub TastenAus()
Application.OnKey "{LEFT}"
Application.OnKey "{RIGHT}"
Application.OnKey "{UP}"
Application.OnKey "{DOWN}"
End Sub
Sub NachRechts()
On Error Resume Next
Crsr = True
ActiveCell.Offset(0, 1).Activate
Crsr = False
End Sub
Sub NachLinks()
On Error Resume Next
Crsr = True
ActiveCell.Offset(0, -1).Activate
Crsr = False
End Sub
Sub NachOben()
On Error Resume Next
Crsr = True
ActiveCell.Offset(-1, 0).Activate
Crsr = False
End Sub
Sub NachUnten()
On Error Resume Next
Crsr = True
ActiveCell.Offset(1, 0).Activate
Crsr = False
End Sub
Fehlen noch die Tasten Bild hoch/runter, Shift+CursorTasten, Pos1, End usw.
Mitunter sehr aufwendig, aber anders geht es m.W. nicht.
Gruß Matthias
Bild

Betrifft: AW: erkennen, wie die aktive Zelle gewechselt wird
von: John
Geschrieben am: 21.03.2005 13:14:18
Hi Matthias,
ja, ist zwar etwas aufwendig, aber damit kann ich durchaus etwas anfangen, vielen Dank!
Gruß,
John
Bild

Betrifft: AW: erkennen, wie die aktive Zelle gewechselt wird
von: ANdreas
Geschrieben am: 21.03.2005 13:51:46
Hallo John,
mit API gehts etwas einfacher:
Code zum Tabellenblatt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If CursorKeyPressed = True Then
    MsgBox "Tastendruck"
End If
End Sub

Code in einem Standardmodul:
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer


Private Function KeyPressed(ByVal Key As Long) As Boolean
    KeyPressed = CBool((GetAsyncKeyState(Key) And &H8000) = &H8000)
End Function

Public Function CursorKeyPressed() As Boolean
Dim blnVar As Boolean
Dim arrKeyCodes(9) As Integer, i%
For i = 40 To 33 Step -1 'Keycodes 37-40 Cursors, 33-36 BildAuf - Pos1
arrKeyCodes(40 - i) = i
Next i
arrKeyCodes(8) = 13: arrKeyCodes(9) = 9 'Enter + TAB
For i = 0 To 9
blnVar = blnVar Or KeyPressed(arrKeyCodes(i))
Next i
CursorKeyPressed = blnVar
End Function
Hoffe das hilft weiter,
Andreas
Bild

Betrifft: Super Lösung! - m.T.
von: Matthias G
Geschrieben am: 21.03.2005 15:01:48
Hallo John,
"etwas einfacher" ist gut ;-)
hab ich gleich zu meiner Makrosammlung hinzugefügt!
Gruß Matthias
Bild

Betrifft: Sorry - Andreas, nicht John - o.T.
von: Matthias G
Geschrieben am: 21.03.2005 17:19:04
-
Bild

Betrifft: AW: Super Lösung! - m.T.
von: ANdreas
Geschrieben am: 21.03.2005 17:37:49
Hallo Matthias,
danke :)
100% sicher ist das ganze aber leider nicht. Mir ist es zwar beim Testen nicht gelungen, aber auf langsamen Rechnern, wenn man gaaaaanz kurz nur die Taste drückt, kann es sein, dass sie schon nicht mehr gedrückt wird, wenn es im Makro abgefragt wird - zumal wenn viele Tasten überprüft werden.
Gruß
Andreas
Nibbles für Excel
 Bild

Beiträge aus den Excel-Beispielen zum Thema "erkennen, wie die aktive Zelle gewechselt wird"