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

Forumthread: Private Sub Worksheet_Change kurz deaktivieren

Private Sub Worksheet_Change kurz deaktivieren
05.04.2009 19:12:12
Karsten
Hallo,
innerhalb der Befehle unter:
Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)
wird
Private Sub Worksheet_Change(ByVal Target As Range)
aufgerufen. Ich möchte dies aber für den einen Durchlauf verhindern. Kann mir jemand weiterhelfen, wie?
Gruß
Karsten
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Private Sub Worksheet_Change kurz deaktivieren
05.04.2009 19:14:33
Hajo_Zi
Hallo Karsten,
Application.EnableEvents = False
nicht vergessen wieder einschalten.

AW: Private Sub Worksheet_Change kurz deaktivieren
05.04.2009 19:30:09
Karsten
Hallo Hajo,
Danke. An welcher Stelle muß ich wieder einschalten? Wenn unter:
Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)
der Befehl durchgelaufen ist? Mit Application.EnableEvents = True?
Gruß
Karsten
Anzeige
AW: Private Sub Worksheet_Change kurz deaktivieren
05.04.2009 19:33:43
Hajo_Zi
Hallo Karsten,
vor End Sub, falls Du nicht Exit Sub einsetzt.
Gruß Hajo
AW: Private Sub Worksheet_Change kurz deaktivieren
06.04.2009 09:53:05
Karsten
Hallo Hajo,
Danke, es geht jetzt alles.
Gruß
Karsten
AW: Private Sub Worksheet_Change kurz deaktivieren
05.04.2009 19:21:11
Gerd
Hallo Karsten,
der "RightClick" alleine löst das Worksheet_Change nicht aus.
Zeige deinen Code oder beschreibe wie Du danach weiter vorgehst.
Gruß Gerd
Anzeige
AW: Private Sub Worksheet_Change kurz deaktivieren
06.04.2009 09:50:09
Karsten
Hallo Gerd
Danke für deine Hilfe, aber es läuft schon alles.
Gruß
Karsten
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Private Sub Worksheet_Change kurz deaktivieren


Schritt-für-Schritt-Anleitung

Um den Private Sub Worksheet_Change(ByVal Target As Range) vorübergehend zu deaktivieren, kannst du die Ereignisse in VBA mithilfe von Application.EnableEvents steuern. Folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Suche die betreffende Arbeitsblatt-Datei und öffne sie.

  3. Füge folgenden Code in das Modul ein:

    Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean)
       Application.EnableEvents = False
       ' Dein Code hier
       Application.EnableEvents = True
    End Sub
  4. Stelle sicher, dass du Application.EnableEvents = True kurz vor End Sub setzt, um die Ereignisse wieder zu aktivieren, es sei denn, du verwendest Exit Sub.


Häufige Fehler und Lösungen

Fehler: Das Worksheet_Change-Ereignis wird nicht deaktiviert.
Lösung: Überprüfe, ob du Application.EnableEvents = True korrekt gesetzt hast, um sicherzustellen, dass die Ereignisse nach deiner Logik wieder aktiviert werden.

Fehler: Fehler beim Ausführen von Private Sub Worksheet_BeforerightClick.
Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt wurde und nicht in einem allgemeinen Modul.


Alternative Methoden

Eine alternative Methode ist die Verwendung des Worksheet_SelectionChange-Ereignisses, um die Worksheet_Change-Prozedur zu umgehen. Du kannst den Code so anpassen, dass er nur bei bestimmten Bedingungen ausgeführt wird:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Application.EnableEvents = False
        ' Hier dein Code
        Application.EnableEvents = True
    End If
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du das Worksheet_Change-Ereignis deaktivieren kannst, wenn eine Zelle bearbeitet wird:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        Application.EnableEvents = False
        ' Logik, die den Worksheet_Change nicht auslösen soll
        Application.EnableEvents = True
    End If
End Sub

In diesem Beispiel wird die Worksheet_Change-Prozedur nur für Zelle B1 deaktiviert.


Tipps für Profis

  • Nutze Kommentare in deinem VBA-Code, um die Funktionsweise zu dokumentieren.
  • Teste den Code in einer Kopie deiner Arbeitsmappe, um ungewollte Änderungen zu vermeiden.
  • Verwende Try-Catch-Mechanismen, um Fehler im Code zu handhaben und das Programm stabiler zu machen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Ereignisse nach meinem Code wieder aktiviert werden?
Setze Application.EnableEvents = True direkt vor End Sub in deiner Prozedur.

2. Was passiert, wenn ich Application.EnableEvents = False vergesse?
Wenn du es vergisst, bleiben alle Ereignisse deaktiviert, was zu unerwartetem Verhalten in deiner Arbeitsmappe führen kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige