Event nur bei Klick aber nicht bei Tastatur

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

Betrifft: Event nur bei Klick aber nicht bei Tastatur
von: Mike
Geschrieben am: 05.11.2015 22:31:07

Hallo,
ich verwende folgenden Code in einem Blatt, um beim Klick in bestimmte Zellen ein Event auszuführen.
Das Event wird schnell und korrekt ausgeführt, mein Problem ist jedoch, dass hier das Event auch dann läuft, wenn man mittels Tab oder Cursor-Tasten zu den entsprechenden Zellen wechselt, was in meinem Fall keinen Sinn macht, da nicht beabsichtigt.
Gibt es eine Möglichkeit, dies hier auszuschließen, so dass nur der Klick das Event auslöst oder gibt es eine andere Funktion, die generell nur mit Klick funktioniert ?
Ein Doppelklick als Alternative kommt hier nicht in Frage.
Mein Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then
        If Len(Target) Then
            If Not Intersect(Range("F:G"), Target) Is Nothing Then
                ' do stuff
            End If
        End If
    End If
End Sub

Vielen Dank im Voraus für jede Hilfe,
Mike

Bild

Betrifft: AW: Event nur bei Klick aber nicht bei Tastatur
von: Daniel
Geschrieben am: 05.11.2015 23:37:02
Hi
ich wüsste nicht, dass es eine Möglichkeit gibt festzustellen, ob eine Zelle per Mausklick oder per Tastatur ausgewählt wurde.
als Workaround könntest du folgendes nutzen
- merke dir in einer statischen Variablen die zuletzt angeklickte Zelle
- vergleiche Zeile und Spalte der aktuellen Zelle mit der germerkten Zelle
- wenn der Abstand von Zeile oder Spalte > 1 oder von Zeile und Spalte = 1 ist, dann -wurde auf jeden Fall mit der Maus geklickt, anderen falls könnte die Tastatur verwendet worden sein.
Wenn du aber eine direkt benachbarte Zelle anklickst, kannst du nicht erkennen ob mit der Maus oder der Tastatur. Hier könntst du dir aber vielleicht damit behelfen, dass du Zwischenzeilen und zwischenspalten einfügst, die du sehr schmal machst, ohne sie ganz auszublenden.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static alteSelektion as range
    If Target.Count = 1 Then
        If Len(Target) Then
            If Not Intersect(Range("F:G"), Target) Is Nothing Then
                if alteSelektion is Nothing then 
                    do Stuff
                else
                    if ABS(Target-Row - alteSelektion.Row) > 1 or ABS(Target.column -  _
alteSelektion.Column) > 1 Then
                '     do stuff
                    end if
                end if                 
            End If
        End If
    End If
set alteSelektion = Target
End Sub
Gruss Daniel

Bild

Betrifft: Na, das ist ja wohl ziemlich kontraproduktiv, ...
von: Luc:-?
Geschrieben am: 06.11.2015 01:16:05
…Daniel,
und ein Verstoß gg gutes Blatt-/TabDesign. Außerdem hilft's nicht bei Gehe zu …, denn das ist ja quasi auch per Tastatur.
Man sollte besser nach dem Grund dieses Unterscheidungs­wunsches fragen, denn dort sollte das eigentliche Problem liegen. Das sieht mir doch sehr nach einem speziellen eigenen Lösungsansatz für ein tiefer­liegendes Problem aus.
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: AW: Na, das ist ja wohl ziemlich kontraproduktiv, ...
von: Mike
Geschrieben am: 06.11.2015 06:35:20
Danke, Luc - Du hast recht hier, da muss ich wohl mal meinen Ansatz überprüfen. ;-)
Gruß,
Mike

Bild

Betrifft: AW: Event nur bei Klick aber nicht bei Tastatur
von: Mike
Geschrieben am: 06.11.2015 06:32:04
Danke, Daniel - das ist, glaube ich, nicht ganz das Richtige für mich, aber interessant zu wissen.
Gruß,
Mike

Bild

Betrifft: AW: Event nur bei Klick aber nicht bei Tastatur
von: fcs
Geschrieben am: 06.11.2015 01:18:34
Hallo Mike,
wenn der Doppelklick -aus welchen Gründen auch immer- keine Alternative ist, dann könnte du es mit dem Rechte-Maus-Klick versuchen (Worksheet_BeforeRightClick-Ereignis).
Gruß
Franz

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     If Target.Count = 1 Then
         If Len(Target) Then
             If Not Intersect(Range("F:G"), Target) Is Nothing Then
                 Cancel = True
                 ' do stuff
                 MsgBox "Test"
             End If
         End If
     End If
End Sub


Bild

Betrifft: AW: Event nur bei Klick aber nicht bei Tastatur
von: Mike
Geschrieben am: 06.11.2015 06:33:17
Hallo Franz,
vielen Dank auch dafür - eine gute Idee, die ich mal prüfen muss.
Gruß,
Mike

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Event nur bei Klick aber nicht bei Tastatur"