Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: BeforeDoubleClick

BeforeDoubleClick
06.03.2004 21:22:45
Ernst Dunkel
Guten Abend Forum
Habe ein Problem mit den beiden unten stehenden Code.
Code 1 funktioniert
Code 2 funktioniert nicht, wenn ich einen Doppelklick auf A1 bis A10 mache.
Kann mir jemand bei meinem Problem helfen?
Mit freundlichen Grüßen
Ernst Dunkel
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 And Target.Row > 0 And Target.Row < 10 Then      'ab Zeile 1 bis 10 der Spalte 2
If Target = "8" Then Target = "N"  ' bei Eingabe von 8 wird N eingetragen
If Target = "2" Then Target = "S"
If Target = "4" Then Target = "W"
If Target = "6" Then Target = "E"
End If
End Sub



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [a1:a10]) Is Nothing Then                                         'Mit Doppelclick auf A1 bis A10
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).ClearContents        'Löscht die Zellen 2 bis 13
End If
Cancel = True
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: BeforeDoubleClick
06.03.2004 21:27:31
Hajo_Zi
Hallo Ernst

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 And Target.Row < 11 Then
'Mit Doppelclick auf A1 bis A10
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).ClearContents
'Löscht die Zellen 2 bis 13
Cancel = True
End If
End Sub

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
Laufzeitfehler 13
06.03.2004 21:35:37
Ernst Dunkel
Hallo Hajo
Danke für Deine schnelle Antwort.
Wenn ich auf eine Zelle in der Spalte A Doppelklicke kommt eine Fehlermeldung!
mfg
Ernst Dunkel
AW: Laufzeitfehler 13
06.03.2004 21:39:15
Hajo_Zi
Hallo Ernst
ich habe diesmal den Code gepostet ohne Ihn zu testen. Das habe ich jetzt nachgeholt. Der Code läuft bei mir Fehlerfrei.
Der Fehler wird durch Private Sub Worksheet_Change(ByVal Target As Excel.Range) ausgelöst.

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
AW: Laufzeitfehler 13
06.03.2004 21:49:58
Ernst Dunkel
Danke für Deine Rückmeldung Hajo.
Mfg
Ernst Dunkel
AW: Laufzeitfehler 13
06.03.2004 21:53:25
Hajo_Zi
Hallo Ernst
der Laufzeitfehler wird mit folgender Veränderung vermieden

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 2 And Target.Row > 0 And Target.Row < 10 Then      'ab Zeile 1 bis 10 der Spalte 2
If Target.Text = "8" Then Target = "N"  ' bei Eingabe von 8 wird N eingetragen
If Target.Text = "2" Then Target = "S"
If Target.Text = "4" Then Target = "W"
If Target.Text = "6" Then Target = "E"
End If
End Sub


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Pro und Excel Version XP Pro


Anzeige
AW: Laufzeitfehler 13
06.03.2004 22:37:48
Ernst Dunkel
Hallo Hajo
Funktioniert super, danke. Wünsche Dir ein schönes Wochenende.
Mit freundlichen Grüßen
Ernst Dunkel
AW: BeforeDoubleClick
06.03.2004 21:35:17
PeterW
Hallo Ernst,
der zweite Code funktioniert, beeinflusst aber den ersten, da WorksheetChange ausgelöst wird. Bei mir funktioniert das problemlos - wobei ich natürlich deine genaue Aufgabenstellung nicht kenne:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [a1:a10]) Is Nothing Then
Application.EnableEvents = False
Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).ClearContents
Application.EnableEvents = True
End If
Cancel = True
End Sub

Gruß
Peter
Anzeige
AW: BeforeDoubleClick
06.03.2004 21:38:31
Ernst Dunkel
Hallo Peter
Recht herzlichen Dank, nun funktioniert es.
Mit freundlichen Grüssen
Ernst Dunkel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Umgang mit BeforeDoubleClick in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe in den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt:

    • Doppelklicke im Projekt-Explorer auf das Arbeitsblatt, in dem du das BeforeDoubleClick-Ereignis implementieren möchtest.
  3. Füge den VBA-Code ein:

    • Kopiere den folgenden Code in das Codefenster:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, [A1:A10]) Is Nothing Then
           Application.EnableEvents = False
           Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).ClearContents
           Application.EnableEvents = True
       End If
       Cancel = True
    End Sub
  4. Speichere deine Arbeit:

    • Schließe den VBA-Editor und speichere die Excel-Datei als Makro-fähige Arbeitsmappe (*.xlsm).
  5. Teste das Ereignis:

    • Doppelklicke auf eine Zelle in den Zellen A1 bis A10, um zu überprüfen, ob die Zellen B bis M dieser Zeile geleert werden.

Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Dieser Fehler kann auftreten, wenn der Worksheet_Change-Code nicht korrekt ist. Stelle sicher, dass du den Text der Zellen korrekt überprüfst:

    If Target.Text = "8" Then Target = "N"
  • Das BeforeDoubleClick-Ereignis funktioniert nicht: Überprüfe, ob das Application.EnableEvents korrekt gesetzt wird. Stelle sicher, dass der Code innerhalb des If-Blocks korrekt ist.


Alternative Methoden

  • Verwendung von Worksheet_Change: Du kannst auch das Worksheet_Change-Ereignis nutzen, um auf Änderungen in bestimmten Zellen zu reagieren, anstelle von Doppelklicks. Der folgende Code ist ein Beispiel dafür:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Column = 2 And Target.Row > 0 And Target.Row < 10 Then
           If Target.Text = "8" Then Target = "N"
       End If
    End Sub
  • Kombination von Ereignissen: Du kannst beide Ereignisse kombinieren, um eine umfassendere Lösung zu erstellen.


Praktische Beispiele

Beispiel 1: Leeren von Zellen in einer bestimmten Reihe.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [A1:A10]) Is Nothing Then
        Range(Cells(Target.Row, 2), Cells(Target.Row, 13)).ClearContents
        Cancel = True
    End If
End Sub

Beispiel 2: Ändern des Wertes in einer Zelle basierend auf einer Eingabe.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
        Select Case Target.Value
            Case "8": Target.Value = "N"
            Case "2": Target.Value = "S"
        End Select
    End If
End Sub

Tipps für Profis

  • Verwende Application.EnableEvents: Dies verhindert, dass das Change-Ereignis während der Ausführung des BeforeDoubleClick-Codes erneut ausgelöst wird.

  • Debugging: Nutze Debug.Print oder Setze Haltepunkte, um den Code Schritt für Schritt zu überprüfen.

  • Kommentare: Füge Kommentare zu deinem Code hinzu, um die Logik und Funktionsweise für dich und andere verständlich zu machen.


FAQ: Häufige Fragen

1. Was ist der Zweck des BeforeDoubleClick-Ereignisses?
Das BeforeDoubleClick-Ereignis ermöglicht es dir, spezifische Aktionen auszuführen, bevor Excel auf einen Doppelklick reagiert.

2. Wie kann ich mehrere Zellen in einer Zeile löschen?
Verwende die Range-Methode in Kombination mit Cells, um eine bestimmte Reihe von Zellen zu leeren, wie im obigen Beispiel gezeigt.

3. Was mache ich, wenn mein Code nicht funktioniert?
Überprüfe, ob die richtigen Bedingungen in deinem If-Block gesetzt sind und ob Application.EnableEvents korrekt verwendet wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige