Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.12.2024 17:25:12
07.12.2024 16:21:30
07.12.2024 15:22:10
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

erkennen, wie die aktive Zelle gewechselt wird

erkennen, wie die aktive Zelle gewechselt wird
21.03.2005 11:57:45
John
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: erkennen, wie die aktive Zelle gewechselt wird
21.03.2005 12:35:41
Matthias
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
Anzeige
AW: erkennen, wie die aktive Zelle gewechselt wird
21.03.2005 13:14:18
John
Hi Matthias,
ja, ist zwar etwas aufwendig, aber damit kann ich durchaus etwas anfangen, vielen Dank!
Gruß,
John
AW: erkennen, wie die aktive Zelle gewechselt wird
21.03.2005 13:51:46
ANdreas
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
Anzeige
Super Lösung! - m.T.
21.03.2005 15:01:48
Matthias
Hallo John,
"etwas einfacher" ist gut ;-)
hab ich gleich zu meiner Makrosammlung hinzugefügt!
Gruß Matthias
Sorry - Andreas, nicht John - o.T.
21.03.2005 17:19:04
Matthias
-
AW: Super Lösung! - m.T.
21.03.2005 17:37:49
ANdreas
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige