Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit Makro-Start bei Klick in Zelle

Forumthread: Probleme mit Makro-Start bei Klick in Zelle

Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 17:18:39
Tim
Hallo,
ich möchte gerne beim Klick in bestimmte Zellen eines Blattes jeweils ein bestimmtes Makro ausführen.
Grundsätzlich funktioniert mein Code wie gewünscht ich stoße jedoch auf folgende Probleme:
1) Wie kann ich erreichen, dass ein Makro nur ausgeführt wird, wenn max. 2 Zellen gleichzeitig aktiv sind ? Ich möchte vermeiden, dass Makros auch dann starten, wenn man z.B. eine ganze Zeile / Spalte oder das ganze Blatt markiert.
2) Ich kann Makros starten, wenn ich in bestimmte Zellen klicke, jedoch nicht, wenn ich zwei Mal hintereinander auf die gleiche Zelle klicke. Das funktioniert nur, wenn ich die Zelle nach dem ersten Klick verlasse, d.h. auf eine andere Zelle klicke, und dann wieder auf die Zelle, die das Makro startet. Lässt sich das irgendwie umgehen ?
Mein Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngSelected As String
If Not Intersect(Target, Range("D11:D17")) Is Nothing Then
'do stuff
End If
End Sub
Kann mir jemand weiterhelfen ?
Gruß,
Tim

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 17:51:51
Herbert
Hallo Tim,
mit "if target.count = 2" kannst Du prüfen, ob 2 Zellen markiert sind.
Servus

AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 17:54:50
Tim
Hallo Herbert,
vielen Dank - das klappt bestens !
Wie kann ich den 2. Punkt erreichen, also dass das Makro auch beim zweiten Klick in der gleichen Zelle ausgeführt wird, also ohne dass ich zwischendurch in eine andere Zelle klicken muss ?
Gruß,
Tim

Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 17:59:58
Herbert
Hallo Tim,
ein SelectionChange-Ereignis wird nur durch eine Cursor-Bewegung ausgelöst. Solange Du in der gleichen Zelle mit dem Cursor bleibst, wird logischerweise nicht ausgelöst.
Dies könntest Du evtl. umgehen, wenn Du nach dem ersten klick auf die gewünschte Zelle den Cursor verschiebst (Activecell.Offset), damit du ihn anschließend noch einmal in die Zelle setzen kannst.
Servus

Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 18:05:09
Tim
Hallo Herbert,
vielen Dank !
Ja, ich glaube so mache ich es auch - das macht am meisten Sinn.
Danke für den Tipp.
Gruß,
Tim

AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 17:53:38
EtoPHG
Hallo Tim,
1)Aktiv kann immer nur 1 Zelle sein (ActiveCell), Selektiert (Selection) können aber mehrere Zellen werden. Das Target enthält die ausgewählten Zellen und darum kann z.B. mit
If Target.Count = 2 Then....
z.B. kontrolliert werden, ob genau 2 Zellen ausgewählt wurden.
2) Das sind keine Makros die du startest und haben auch nichts mit 'Klick' zu tun. Das ist eine Ereignisprozedur, die automatisch anläuft wenn die Cursor-(Selection)Auswahl im Blatt wechselt. Darum wird sie auch nicht ausgelöst, wenn du auf die bereits ausgewählte Zelle klickst!
Gruess Hansueli

Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 18:00:46
Tim
Hallo Hansueli,
vielen Dank !
Punkt 1) ist ok.
Deine Erklärung zu Punkt 2) macht auch Sinn, Kann ich hier sonst irgendetwas tun ?
Ich habe z.B. eine Zelle, klickt man in diese, dann werden u.a. bestimmte Zeilen eingeblendet.
Nun hätte ich gerne, dass das gleiche Ereignis noch einmal ausgelöst wird (der Code enthält schon den Fall zum Ausblenden der Zeilen), wenn ich nochmal in die Zelle klicke - aber eben ohne, dass ich dazu zwischendurch in eine andere Zelle klicken muss.
Gruß,
Tim

Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 18:06:49
Daniel
HI
zum Starten bestimmter Makros über Klick auf eine Zelle verwendet man besser das BeforeDouble-Click-Event.
man muss dann zwar einen Doppelklick ausführen, aber man hat dafür mehrere Vorteile:
- weniger unbeabsichtigte Makrostarts, weil der Doppelklick doch eher bewusst ausgeführt wird, während ein einfacher Klick doch mal zufällig und unbeabsichtigt passieren kann
- mehrfaches Auslösen direkt hintereinander auf der gleichen Zelle ist ohne zusätzlichen Programmieraufwand möglich
- es gibt automatsich nur eine Target-Zelle, so dass der Fall "mehrfachselektion" nicht beachtet werden muss
Gruß Daniel

Anzeige
AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 18:09:04
Tim
Hi Daniel,
danke für die gute Erklärung - das ist sehr hilfreich und eine super Alternative !
Mal schauen, wie weit ich damit komme. :)
Gruß,
Tim

AW: Probleme mit Makro-Start bei Klick in Zelle
23.10.2015 18:37:19
Matthias
Hallo Tim
Es gibt aber auch noch den RightClick, also den Rechtsklick ...

Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox Target.Address
End Sub

Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Makros bei Zellenklicks in Excel effizient nutzen


Schritt-für-Schritt-Anleitung

Um ein Makro bei einem Klick in bestimmte Zellen auszuführen, kannst Du das Worksheet_SelectionChange-Ereignis verwenden. Hier ist eine einfache Anleitung:

  1. Öffne Dein Excel-Dokument und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Wähle das Arbeitsblatt, in dem Du das Makro implementieren möchtest, im Projekt-Explorer aus.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not Intersect(Target, Range("D11:D17")) Is Nothing Then
           ' Hier kommt der Code für das Makro
           MsgBox "Makro wurde ausgeführt."
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zurück zu Excel. Jetzt wird das Makro ausgeführt, wenn Du in die Zellen D11 bis D17 klickst.


Häufige Fehler und Lösungen

  1. Problem: Das Makro wird nicht ausgeführt, wenn ich zwei Zellen gleichzeitig auswähle.

    • Lösung: Du kannst die Anzahl der ausgewählten Zellen mit If Target.Count = 2 Then überprüfen. Das Beispiel könnte so aussehen:
    If Target.Count = 2 Then
       ' Dein Makro-Code
    End If
  2. Problem: Das Makro wird nicht beim zweiten Klick in die gleiche Zelle ausgeführt.

    • Lösung: Das SelectionChange-Ereignis wird nur bei einer Cursorbewegung ausgelöst. Du musst den Cursor programmgesteuert bewegen. Eine Alternative kann das BeforeDoubleClick-Ereignis sein.

Alternative Methoden

  1. Doppelklick-Ereignis verwenden: Mit dem Worksheet_BeforeDoubleClick-Ereignis kannst Du ein Makro bei einem Doppelklick ausführen. Hier ein Beispiel:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, Range("D11:D17")) Is Nothing Then
           Cancel = True ' Verhindert den Standard-Doppelklick
           ' Dein Makro-Code hier
           MsgBox "Makro beim Doppelklick ausgeführt."
       End If
    End Sub
  2. Rechtsklick-Ereignis: Du kannst auch einen Rechtsklick nutzen, um ein Makro auszuführen. Hier ist ein Beispiel:

    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, Range("D11:D17")) Is Nothing Then
           Cancel = True
           MsgBox "Makro beim Rechtsklick ausgeführt."
       End If
    End Sub

Praktische Beispiele

  • Makro zur Zeilenanzeige: Wenn Du eine Zelle klickst, um bestimmte Zeilen einzublenden, könnte Dein Code so aussehen:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not Intersect(Target, Range("D11")) Is Nothing Then
           Rows("12:15").EntireRow.Hidden = Not Rows("12:15").EntireRow.Hidden
       End If
    End Sub
  • Bestätigung bei Doppelklick: Wenn Du eine Bestätigung beim Doppelklick möchtest:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, Range("D11")) Is Nothing Then
           Cancel = True
           MsgBox "Doppelklick erkannt!"
       End If
    End Sub

Tipps für Profis

  • Vermeide unbeabsichtigte Makrostarts: Das Doppelklick-Ereignis reduziert unbeabsichtigte Ausführungen, da Benutzer bewusster klicken.
  • Verwende ActiveCell.Offset: Damit kannst Du den Cursor nach dem ersten Klick verschieben, um einen zweiten Klick in der gleichen Zelle zu simulieren.

    ActiveCell.Offset(0, 1).Select ' Cursor nach rechts verschieben
    ActiveCell.Select ' Cursor zurück zur ursprünglichen Zelle

FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Makros in einer Zelle ausführen?
Antwort: Du kannst die Makros nacheinander innerhalb des If-Blocks aufrufen.

2. Frage
Was ist der Unterschied zwischen SelectionChange und BeforeDoubleClick?
Antwort: SelectionChange wird bei jeder Änderung der Auswahl ausgelöst, während BeforeDoubleClick nur bei Doppelklicks funktioniert.

3. Frage
Kann ich die Makros auch in Excel Online verwenden?
Antwort: Leider unterstützen Excel Online keine VBA-Makros. Du musst die Desktop-Version verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige