Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
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

Zelle nochmals anklicken

Zelle nochmals anklicken
07.09.2021 22:49:32
SchubertFranzl
Hallo
Kann man ein Makro starten lassen, wenn der Anwender eine selektierte Zelle anklickt, also ein langsamer Doppelklick?
Vielleicht gibt es da einen genialen Trick.
LG, Franz

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle nochmals anklicken
08.09.2021 04:58:15
Matthias
Hallo Franz,
welchen Hintergrund hat denn das Ganze?
Ich mache das immer so:
Ich nehme eine Zelle die für das Vorhaben nicht relevant ist.
Code gehört ins entsprechende Tabellenblatt.

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Cells(1, 1)) Is Nothing Then
MsgBox "angeklickt wurde " & Target.Address
End If
Cells(1, 1).Select
End Sub
Heißt im Klartext, wenn eine Zelle angeklickt wird bekommst Du die MsgBox und dann wird "A1" (die nicht relevante Zelle) markiert.
Evtl. ist das für Dich ja eine Option.
Gruß Matthias
Anzeige
AW: Zelle nochmals anklicken
09.09.2021 17:33:08
SchubertFranzl
Hallo Matthias,
das erfüllt nicht meine Zwecke.
Der Anwender soll durch die Art des Anklickens eine Zelle verschiedene Dinge auslösen können.
Zum Beispiel, wenn er eine Zelle anklickt, oder wenn er eine Zelle doppelt anklickt oder rechts anklickt. Dafür gibt es Makros, die auf sowas reagieren.
Langsam anklicken wäre vielleicht eine weitere Option, dachte ich mir. Ich habe das mal wo gesehen, weiß aber nicht mehr, wo.
Was ich wollte, ist sowas wie "Worksheet_BeforeClick", aber das gibt es wohl nicht.
Aber es gibt auch andere Wege.
Vielen Dank für Deine Antwort.
LG, Franz
Anzeige
AW: Zelle nochmals anklicken
09.09.2021 17:54:50
SchubertFranzl
Nachtrag:
Praktischer Hintergrund wäre zum Beispiel:
es ist ein "Worksheet_BeforeDoubleClick" angelegt, das einen Blatttwechsel auslöst. Damit kann der Anwender aber nicht mehr wie gewohnt mit Doppelklick in die Zelle rein, um den Eintrag zu verändern. Daher die Idee des langsamen Doppelklicks, um in die Zelle zu kommen.
LG, Franz
'Genialen Trick' braucht's nicht, ...
10.09.2021 01:29:21
Luc:-?
…Franz;
dein „langsamer DoppelKlick“ löst lt deiner Beschreibung ein Worksheet_Change-Ereignis aus. Man kann eine Zelle erst auswählen und dann in die Edit-Zeile klicken oder per DoppelKlick auf die Zelle editieren. In beiden Fällen wdn nach Beenden des so verursachten Edit-Modus 2-3 Ereignisse ausgelöst, erst _SelectionChange und ggf anschließend _BeforeDoubleClick, danach auf jeden Fall noch _Change, egal ob dabei was geändert wird oder nicht. Das kannst du nutzen, um deine Vorstellung zu realisieren, aber im Prinzip reicht allein _Change schon aus, es sei denn, du benutzt das auch für andere Zwecke. Dann musst du den Inhalt der Zelle merken (1.Ereignis → GlobalVariable) und beim 2.|3.Ereignis erneut und beide Werte vgln. Davon machst du abhängig, was passieren soll. Nach dem, was du schreibst, also bei DoppelKlick mit Änderung nichts, ohne Änderung aber Aufruf des Pgms. Ich würde ggf allerdings RechtsKlick (mit MenüUnterdrückung → Cancel = True) bevorzugen.
Alternativ kannst du auch DoppelKlick für Änderungen reservieren und dabei eine GlobalVariable setzen, aber das halte ich für unsicher, weil die Nutzer unterschiedliche EditierGewohnheiten haben können und ggf auch beide Möglichkeiten nutzen. Ggf ist es aber deshalb zweckmäßig, hier ebenfalls die gleiche GlobalVariable wie beim 1.Ereignis zu setzen, denn eine solche Zelle kann ja bei BlattWechsel schon ausgewählt sein. Dann wird in beiden Fällen das 1.Ereignis nicht ausgelöst.
Morhn, Luc :-?
Anzeige
AW: 'Genialen Trick' braucht's nicht, ...
11.09.2021 08:51:51
SchubertFranzl
Hallo Luc,
danke für Deine Antwort. Ich habe sei erst nicht gesehen, weil die Email-Benachrichtigung nicht funktioniert und ich das Thaema bereits abgehakt habe. Deswegen sehe ich routinemäßig erst nach einiger Zeit nach, ob noch Antworten hereingekommen sind.
Aus Deinen Ausführungen konnte ich keinen Lösungsansatz finden, zumindest nicht für mein Problem.
Folgendes Makro zeigt die Ausgangslage:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Ausdruck Target, "Before DoubleClick", Cancel
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Ausdruck Target, "Before RightClick", Cancel
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Ausdruck Target, "SelectionChange"
End Sub
Sub Ausdruck(Zelle As Range, Meldung As String, Optional ByRef Abbruch As Boolean)
Abbruch = True
Debug.Print Zelle.Address & " " & Meldung
End Sub .
(leider wird das letzte Sub nicht als Makro dargestellt, weiss der Geier warum)
Klick nun eine Zelle an. Das löst ein SelectionChange aus.
Nun klick sie nochmals an, und das löst nichts aus.
Das habe ich mit langsamer Doppelklick gemeint.
LG, Franz
Anzeige
Probier mal das aus, ...
11.09.2021 17:16:36
Luc:-?
…Franz:

Option Explicit
Dim KlickWert
Private Sub Dummy()
Debug.Print "Dummy: keine Änderung "; KlickWert
MsgBox "Hallo, hier bin ich!", , "Dummy"
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
KlickWert = Target.Address(0, 0) & ": " & CStr(Target)
Debug.Print "BeforeDoubleClick: "; KlickWert
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If KlickWert = Target.Address(0, 0) & ": " & CStr(Target) Then Call Dummy
Debug.Print "Change: "; Target.Address(0, 0) & ": " & CStr(Target)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
KlickWert = Target.Address(0, 0) & ": " & CStr(Target)
Debug.Print "SelectionChange: "; KlickWert
End Sub
Übrigens, Cancel ist immer False, damit das Menü angezeigt wird. Du musst ihm den Wert True zuweisen, wenn es nicht angezeigt wdn soll.
Luc :-?
Anzeige
AW: Probier mal das aus, ...
11.09.2021 22:45:38
SchubertFranzl
Hallo Luc,
danke für Dein Beispiel. Das war mir schon klar. Beim Verlassen der Editierzeile wird mit dem zuvor gespeicherten Wert verglichen.
Ich wollte was anderes: Wenn der Anwender eine Zelle anklickt, also im Sinne von SelectionChange, soll nichts passieren.
Wenn er die Zelle nochmals anklickt, soll ein Makro aufgerufen werden.
Wenn er die Zelle doppelt anklickt, soll ein anderes Makro aufgerufen werden.
Wenn er die Zelle rechts anklickt, soll ein anderes Makro aufgerufen werden.
Sicher, es geht auch mit anderen Mitteln. Aber das ist mir zu umsändlich. Ich dachte, es gibt da einen einfachen Weg.
Mittlerweile bin ich davon abgekommen und habe dringendere Excel-Probleme zu lösen. Es war nur eine Idee.
Danke nochmals und liebe Grüße,
Franz
Anzeige
AW: Probier mal das aus, ...
12.09.2021 00:40:12
Daniel
Hi
Geht auch nicht so einfach per Standard-VBA.
Es gibt kein Event das auslöst, wenn die aktive Zelle nochmal mit Zeitabstand (kein Doppelklick) anklickst. Dann passiert einfach nichts.
Die Aufgabenstellung "Makro wenn rechte Nachbarzelle geklickt wird" könnte man dadurch lösen, dass man in einer statischen Variablen die angeklickte Zelle speichert und somit dann bei erneuter Ausführung des SelectionChange-Events vergleicht, wie die aktuelle Zelle zur zuletzt angeklickzen Zelle positioniert ist.
Die Aufgabe "gleiche Zelle nochmal" könnte man dann über den Trick lösen, dass man die angeklickte Zelle per Formatierung markiert, speichert un dann eine abseits liegende Zelle selektiert - ohne dabei diesen Prozess auszulösen, so dass beim nächsten Klick auf jeden Fall ausgelöst wird.
Ist aber nur ein Workaround mit eingeschränkter Funktionalität, weil bspw zwingend mit der Maus gearbeitet werden muss.
Es würde auch nicht funktionieren, wenn der Anwender was in die von ihm ausgewählte Zelle eingeben will, weil die Eingabe dann ja in die falsche Zelle gehen würde.
Also wenn nur geklickt wird, könnte man mit geringem Aufwand was programmieren, um einen zweimaligen Klick auf die gleiche Zelle zu erkennen, ansonsten wirds schwierig.
Gruß Daniel
Anzeige
Ein 2.Anklicken einer markierten Zelle ...
12.09.2021 00:42:01
Luc:-?
…löst kein Ereignis aus, Franz,
nur das Reinklicken (nach Ende Edit-Modus), Doppel- oder Rechtsklicken. Deshalb hatte ich _Change verwendet.
Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige