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

Makro per Makro deaktivieren

Forumthread: Makro per Makro deaktivieren

Makro per Makro deaktivieren
01.04.2008 14:25:00
Tommi
Liebe Excel-Gemeinde,
ich habe in einer Excel-Datei das folgende Makro. Ich würde es gern während der Bearbeitung der Datei deaktivieren und nach Abschluss der Arbeiten an der Datei wieder aktivieren. Gibt es einen Code, den ich mir z.B. auf ein verstecktes Textfeld legen kann, um auf Knopfdruck zum Deaktiveren?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)
Call ws.Range("A10").AutoFilter(21, "Yes", , , False)
End Sub


Herzlichen Dank und schöne Grüße
Tommi

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro per Makro deaktivieren
01.04.2008 14:27:44
Ramses
Hallo

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
If Ucase(Range("A1")) = "X" Then Exit Sub
Set ws = ThisWorkbook.Worksheets(1)
Call ws.Range("A10").AutoFilter(21, "Yes", , , False)
End Sub


Wenn du nun zuerst in A1 ein "x" schreibst, dann "funktioniert" das Makro nicht mehr bis du das "x" wieder löscht.
Gruss Rainer

Anzeige
AW: Makro per Makro deaktivieren
01.04.2008 14:35:00
Tommi
Hallo Rainer,
herzlichen Dank für Deine Antwort. Leider ist die Datei grundsätzlich schreibgeschützt und wird erst über ein bereits auf einem versteckten Textfeld liegenden Code entsperrt. Da wollte ich das Deaktivieren gleich mit einbinden. Meinst Du, das wäre möglich? Der Vollständigkeit halber nachfolgend der bereits existierende Code.

Sub Textfeld1_BeiKlick()
Worksheets("AB1").Unprotect ("go")
ActiveWindow.DisplayWorkbookTabs = True
Worksheets("AB1").Activate
With ActiveWindow
.DisplayGridlines = True
.DisplayHeadings = True
End With
Columns("L:P").Hidden = False
End Sub


Herzlichen Dank für Eure Hilfe und schöne Grüße
Tommi

Anzeige
AW: Makro per Makro deaktivieren
01.04.2008 15:31:24
UweD
Hallo
müßte klappen:
- Events im Makro ausschalten. Dadurch werden alle Ereignisse (auch das Worksheet_Change()) nicht mehr ausgeführt
- der Rest Deines Makros
- Events wieder einschalten.
- Tipp mit der Fehlerbehandlung werden diese auch im Fehlerfalle wieder aktiviert.


      
Sub dsdsd()
    
On Error GoTo Fehler
    Application.EnableEvents = 
False
    
' dein Makro
    
Fehler:
    
If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
    Application.EnableEvents = 
True
End Sub 


Anzeige
Funktioniert wunderbar
01.04.2008 15:55:54
Tommi
Herzlichen Dank
Tommi
;
Anzeige
Anzeige

Infobox / Tutorial

Makros in Excel deaktivieren: So funktioniert's


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu deaktivieren, kannst du den folgenden VBA-Code verwenden. Dieser Code schaltet die Events aus, sodass das Makro nicht mehr ausgeführt wird, bis du es wieder aktivierst.

  1. Öffne den VBA-Editor (ALT + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere den folgenden Code in das Modul:
Sub MakroDeaktivieren()
    On Error GoTo Fehler
    Application.EnableEvents = False  ' Makros deaktivieren
    ' Hier kannst du dein Makro einfügen
    ' Beispiel: Call DeinMakro
Fehler:
    If Err.Number <> 0 Then
        MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
    End If
    Application.EnableEvents = True  ' Makros wieder aktivieren
End Sub
  1. Um das Makro zu aktivieren, kannst du den gleichen Code verwenden und die Zeile für dein spezifisches Makro einfügen.

Häufige Fehler und Lösungen

  • Fehler: Makro wird nicht ausgeführt
    Stelle sicher, dass du die Zeile Application.EnableEvents = False korrekt platziert hast. Wenn Events deaktiviert sind, wird das Makro nicht mehr ausgeführt.

  • Fehler: Schreibgeschützte Datei
    Wenn die Datei schreibgeschützt ist, verwende Worksheets("SheetName").Unprotect "password" vor dem Deaktivieren der Events, um sicherzustellen, dass du Änderungen vornehmen kannst.


Alternative Methoden

Eine alternative Möglichkeit, um Excel-Makros auszuschalten, ist die Verwendung eines versteckten Textfelds:

  1. Füge ein Textfeld in dein Excel-Blatt ein.
  2. Lege den folgenden Code in das Textfeld:
Private Sub Textfeld1_BeiKlick()
    Application.EnableEvents = False  ' Makros deaktivieren
    ' Hier kannst du dein Makro aufrufen
    Application.EnableEvents = True  ' Makros aktivieren
End Sub

Diese Methode ermöglicht es dir, das Makro mit einem Klick auf das Textfeld zu aktivieren oder zu deaktivieren.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Deaktivierung von Makros in Excel:

  1. Deaktivierung basierend auf Zellinhalt:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If UCase(Range("A1")) = "X" Then Exit Sub  ' Makro deaktiviert, wenn A1 "X" ist
       ' Dein Makro hier
    End Sub
  2. Schutz und Deaktivierung:

    Sub SchutzUndDeaktivierung()
       Worksheets("AB1").Unprotect "deinPasswort"
       Application.EnableEvents = False
       ' Dein Makro hier
       Application.EnableEvents = True
       Worksheets("AB1").Protect "deinPasswort"
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Stelle sicher, dass du Fehlerbehandlungsroutinen in deinem Code hast, um unerwartete Fehler zu vermeiden.
  • Teste regelmäßig: Überprüfe die Funktionalität deines Makros, insbesondere nach Änderungen am Code.
  • Dokumentiere deinen Code: Kommentiere deinen VBA-Code, damit du und andere verstehen, was jeder Teil des Codes macht.

FAQ: Häufige Fragen

1. Wie kann ich alle Makros in Excel deaktivieren?
Du kannst alle Makros in Excel deaktivieren, indem du zu Datei > Optionen > Vertrauensstellungscenter > Einstellungen für das Vertrauensstellungscenter gehst und die Makroeinstellungen anpasst.

2. Was passiert, wenn ich die Events nicht wieder aktiviere?
Wenn du die Events nicht wieder aktivierst, wird Excel nicht mehr auf Änderungen in den Zellen reagieren, und deine Makros, die auf Ereignisse basieren, werden nicht mehr ausgeführt.

3. Wie kann ich sicherstellen, dass mein Makro nur einmal ausgeführt wird?
Eine Möglichkeit, dies zu erreichen, ist die Verwendung einer Bedingung, die prüft, ob eine bestimmte Zelle einen bestimmten Wert hat, bevor das Makro ausgeführt 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