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

SelectionChange mit VBA temp. deaktivieren

Forumthread: SelectionChange mit VBA temp. deaktivieren

SelectionChange mit VBA temp. deaktivieren
30.07.2003 11:10:16
Koenig W.
Hallo zusammen
ich habe ein Selection Change Ereignis, welches mir ein Macro aufruft. Das Macro bildet abhängig von der Schriftfarbe eine Summe in einem Bereich über mehrere Spalten.
Zusätzlich muss ich von Zeit zu Zeit einen Update (Abgleich von zwei Worksheets machen. Dabei kopiere ich neue Werte in die bestehende Tabelle.
Dadurch wird immer das ChangeEreignis ausgelöst, was den Code bremst.
Gibt es eine Möglichkeit mit dem Updatecode aus VBA den Aufruf des Macros aus dem ChangeEreignis zu deaktivieren und am Schluss wieder zu aktivieren.
Besten Dank
Gruss Wilhelm
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SelectionChange mit VBA temp. deaktivieren
30.07.2003 11:14:08
ChrisL
Hi Wilhelm

Application.EnableEvents = False
Call makro
Application.EnableEvents = True

Eine Fehlerroutinge (On Error etc.) würde ich dir empfehlen.

Gruss
Chris


AW: SelectionChange mit VBA temp. deaktivieren
30.07.2003 11:26:09
Koenig W.
Besten Dank an alle,
habe es versucht mit EnableEvents, aber direkt im Update Macro und nicht von ausserhalb.
Funktioniert von ausserhalb genau wie gewünscht.
Gruss Wilhelm


Anzeige
AW: SelectionChange mit VBA temp. deaktivieren
30.07.2003 11:14:28
Michael Scheffler
Hi,

vielleicht:

Application.EnableEvents = False

Gruß

Micha


AW: Application.EnableEvents = False
30.07.2003 11:14:56
Nike
Hi,

versuchs mal mit
Application.EnableEvents = False

Bye

Nike


3 Antworten in 1 min. -> Klasse
30.07.2003 11:24:50
Michael Scheffler


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Temporäres Deaktivieren des SelectionChange-Ereignisses in VBA


Schritt-für-Schritt-Anleitung

Um das SelectionChange-Ereignis in Excel VBA temporär zu deaktivieren, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Finde das betreffende Arbeitsblatt:

    • Suche im Projekt-Explorer nach dem Arbeitsblatt, das das SelectionChange-Ereignis enthält.
  3. Deaktiviere das Ereignis:

    • Füge den folgenden Code in das Update-Makro ein, um das Ereignis temporär zu deaktivieren:
    Sub UpdateMakro()
       Application.EnableEvents = False  ' Deaktiviert das SelectionChange-Ereignis
    
       ' Hier deinen Update-Code einfügen
    
       Application.EnableEvents = True   ' Aktiviert das SelectionChange-Ereignis wieder
    End Sub
  4. Teste den Code:

    • Führe das Update-Makro aus und überprüfe, ob das SelectionChange-Ereignis nicht ausgelöst wird.

Häufige Fehler und Lösungen

  • Fehler: Ereignis wird nicht deaktiviert:

    • Stelle sicher, dass Application.EnableEvents = False vor dem Ausführen deines Codes steht und dass der Code korrekt strukturiert ist.
  • Fehler: Makro läuft nicht:

    • Überprüfe, ob die Makros in deinem Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Alternative Methoden

Wenn du das SelectionChange-Ereignis nicht nur temporär deaktivieren möchtest, kannst du auch folgende Methoden ausprobieren:

  • Ereignis-Handler verwenden:

    • Statt das Ereignis zu deaktivieren, kannst du auch Bedingungen im Worksheet_SelectionChange-Ereignis einfügen, die das Makro nur unter bestimmten Umständen ausführen.
  • Verwendung von Flags:

    • Setze eine globale Variable, um anzugeben, ob das Ereignis ausgeführt werden soll oder nicht. Beispiel:
    Dim allowSelectionChange As Boolean
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not allowSelectionChange Then Exit Sub
       ' Dein SelectionChange Code hier
    End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, die zeigen, wie du SelectionChange in Kombination mit VBA verwenden kannst:

  1. Einfaches Beispiel:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Target.Cells.Count > 1 Then Exit Sub  ' Nur für eine Zelle
       MsgBox "Du hast die Zelle " & Target.Address & " ausgewählt."
    End Sub
  2. Zusammenfassung basierend auf Schriftfarbe:

    • Ein Makro, das bei Auswahländerungen die Summe von Zellen mit einer bestimmten Schriftfarbe berechnet.

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error-Anweisungen, um zu vermeiden, dass das Programm bei Fehlern abstürzt.

  • Testen in einer sicheren Umgebung: Teste deinen Code immer zuerst in einer Kopie deiner Datei, um Datenverlust zu vermeiden.

  • Dokumentation: Kommentiere deinen Code ausführlich, damit du und andere Benutzer die Logik leicht nachvollziehen können.


FAQ: Häufige Fragen

1. Was passiert, wenn ich EnableEvents nicht zurücksetze? Wenn du Application.EnableEvents = False nicht zurücksetzt, werden alle anderen Ereignisse nicht mehr ausgelöst, was zu unerwartetem Verhalten in deiner Excel-Anwendung führen kann.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in allen modernen Excel-Versionen ab Excel 2003 funktionieren, solange VBA unterstützt wird. Achte darauf, dass Makros aktiviert sind.

3. Kann ich andere Ereignisse ebenfalls deaktivieren? Ja, du kannst das gleiche Prinzip für andere Ereignisse wie Worksheet_Change anwenden, indem du Application.EnableEvents entsprechend setzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige