Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: excel vba change event deaktivieren

excel vba change event deaktivieren
13.07.2017 21:50:56
Matthias
Hallo Excel Profis,
ich habe da wieder mal ein Problem
ich möchte gezielt das Ereignis Change deaktivieren. Die anderen Ereignisse sollen weiterlaufen wie z.B. Before Double Click.
Ist das möglich?
Der Befehl "Application.EnableEvents = False" deaktiviert alle Ereignisse.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel vba change event deaktivieren
13.07.2017 23:01:02
Uduuh
Hallo,
definiere eine globale Variable
In einem Modul:
Public pbolChangeOff As Boolean

Die setzt du bei Bedarf auf True.
In den Change-Prozeduren fragst du sie ab:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not pbolChangeOff Then
'Code
End If
End Sub
Gruß aus’m Pott
Udo

Anzeige
AW: excel vba change event deaktivieren
14.07.2017 07:58:38
Matthias
Ersteinmal Danke das du mir hilfst...
ich bin nicht so fit was VBA betrifft!!!
kannst du mir erklären wie die Variable das Ereignis blockiert?
Public pbolChangeOff As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Not pbolChangeOff Then
'Ereignis Change auf die Spalten E und F begrenzt
If Not Application.Intersect(Target, Range("E:F")) Is Nothing Then
'Im Makro "FehlermeldungDatum" wird das Datum aus Spalte E mit dem aus F verglichen
'wenn E > dann kommt die Fehlermeldung
Call FehlermeldungDatum
End If
End If
End Sub
Ich habe die in globale Variable über mein Makro geschrieben. Oder gehört sie in die Arbeitsmappe?
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA Change Event Deaktivieren


Schritt-für-Schritt-Anleitung

Um das Change Event in Excel VBA gezielt zu deaktivieren, während andere Ereignisse weiterhin aktiv bleiben, kannst du folgende Schritte befolgen:

  1. Globale Variable definieren: Erstelle eine globale Variable, die den Status des Change Events speichert. Füge dazu in einem Modul den folgenden Code ein:

    Public pbolChangeOff As Boolean
  2. Variable setzen: Setze die Variable pbolChangeOff auf True, wenn du das Change Event deaktivieren möchtest, und auf False, wenn du es aktivieren möchtest.

  3. Change-Prozedur anpassen: In deiner Worksheet_Change-Prozedur kannst du nun die Variable abfragen. Beispiel:

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not pbolChangeOff Then
            'Führe dein Change Event aus
            If Not Application.Intersect(Target, Range("E:F")) Is Nothing Then
                'Hier kommt dein Code
                Call FehlermeldungDatum
            End If
        End If
    End Sub
  4. Ereignis aktivieren/deaktivieren: Verwende pbolChangeOff, um das Change Event zu steuern. Dadurch bleibt das Before Double Click-Ereignis aktiv, während das Change Event deaktiviert wird.


Häufige Fehler und Lösungen

  • Fehler: Das Change Event wird trotz pbolChangeOff weiterhin ausgeführt.
    Lösung: Stelle sicher, dass die globale Variable pbolChangeOff korrekt gesetzt wird, bevor das Change Event ausgelöst wird.

  • Fehler: Der Code wird nicht ausgeführt, obwohl pbolChangeOff auf False gesetzt ist.
    Lösung: Überprüfe, ob du in der richtigen Arbeitsmappe und im richtigen Modul arbeitest.


Alternative Methoden

Eine andere Möglichkeit, das Excel VBA Change Event auszuschalten, ist die Verwendung der Application.EnableEvents-Eigenschaft. Beachte jedoch, dass dies alle Ereignisse deaktiviert:

Application.EnableEvents = False

Um es wieder zu aktivieren, kannst du folgenden Code verwenden:

Application.EnableEvents = True

Diese Methode ist weniger flexibel, da sie alle Events ausschaltet und nicht nur das Change Event.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die globale Variable in einem realen Szenario verwenden kannst:

Public pbolChangeOff As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not pbolChangeOff Then
        If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
            MsgBox "Wert in A1 geändert!"
        End If
    End If
End Sub

Sub DeactivateChangeEvent()
    pbolChangeOff = True
End Sub

Sub ActivateChangeEvent()
    pbolChangeOff = False
End Sub

Mit diesem Code kannst du das Change Event gezielt für die Zelle A1 aktivieren oder deaktivieren.


Tipps für Profis

  • Nutze Debugging und Setze Haltepunkte in deinem VBA-Code, um sicherzustellen, dass die Variable pbolChangeOff korrekt gesetzt wird.
  • Halte deinen Code modular, indem du verschiedene Prozeduren für das Deaktivieren und Aktivieren des Change Events erstellst.
  • Dokumentiere deinen Code gut, um später nachvollziehen zu können, warum und wann das Change Event deaktiviert wurde.

FAQ: Häufige Fragen

1. Frage
Wie kann ich das Change Event nur für bestimmte Zellen deaktivieren?
Antwort: Du kannst die Abfrage in der Worksheet_Change-Prozedur so anpassen, dass sie nur für die gewünschten Zellen ausgeführt wird, indem du Application.Intersect verwendest.

2. Frage
Was passiert, wenn ich Application.EnableEvents = False verwende?
Antwort: Diese Methode deaktiviert alle VBA Events in Excel, was bedeutet, dass auch andere Ereignisse wie Before Double Click nicht mehr funktionieren, bis du sie wieder aktivierst.

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