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

Reset von ausgeführten Makros möglich?

Forumthread: Reset von ausgeführten Makros möglich?

Reset von ausgeführten Makros möglich?
18.12.2003 19:53:16
S. Futterknecht
Hallo Profis,

hier ist meine Ausgangslage:

Nach der Ausführung eines Makros werden Einstellungen wirksam. Wenn Korrekturen fällig sind, dann sind Diese nach der erneuten Ausführung zwar aktiv, jedoch auch die vorherigen Einstellungen.

Ist es möglich, vor jedes Makro ein kleines Reset-Programm zu schreiben, damit immer gewährleistet ist, dass die alten Einstellungen gelöscht sind?

Hier ein Makrobeispiel:


Private Sub Workbook_Open()
With Sheets("Tabelle1")
.[d5,d7,d9,e6,e10].Locked = True
.ScrollArea = "$C$4:$F$11"
.EnableSelection = 1
.Protect contents:=True
End With
End Sub


Vielen Dank im Voraus

SF
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Reset von ausgeführten Makros möglich?
18.12.2003 20:04:01
Karl-Otto Reimann
Hallo S (bitte mit Klarnamen)

Ein bißchen experimentieren mußt Du schon:


Sub UndoTest()
Application.OnUndo "Eintragung löschen", ThisWorkbook.Name & "!UndoEin"
End Sub



Sub UndoEin()
Range("A1:A10").ClearContents
End Sub



Sub Eintragen()
Dim intCounter As Integer
For intCounter = 1 To 10
Cells(intCounter, 1).Value = intCounter
Next intCounter
Call UndoTest
End Sub


Wenn Du in A1:a10 Werte einträgst, werden diese über Bearbeiten/Rückgängig
wieder aufgehoben.

mfG KO
Anzeige
AW: Reset von ausgeführten Makros möglich?
18.12.2003 20:28:38
Ich raff´s nicht!
Lieber Karl-Otto,

zuerst einmal vielen Dank für Deine Antwort. Mein Vorname ist Sidon.

Offensichtlich habe ich es nicht verstanden, Deine Lösung umzusetzen. Wie soll ich Deine Makros ausführen und in welcher Reihenfolge? Bei einzelner Ausführung kommt beim dritten Block ein Laufzeitfehler. Wenn ich mein Makro ausführe, dann kann ich jetzt nur noch auf den vorher begrenzten Bereich zugreifen.
Mein Makro soll nur den Zugriff auf genau definierte Felder erlauben. Wenn ich diese Felder ändern muss, dann geht das nicht mehr.
Könntest Du Deine kostbare Zeit nochmals aufwenden, um es mir genauer zu erklären.

Danke

SF
Anzeige
AW: Reset von ausgeführten Makros möglich?
18.12.2003 20:45:09
Karl-Otto Reimann
Öffne eine neue Mappe (Datei/Neu)
Mit ALT+F11 gelangst Du in ein Standardmodul,
in dieses Standardmodul gibst Du obige Module ein (alle drei)
und dann geht's (in A1:A10 Zahlen eingeben), wenn nicht, wieder melden.
AW: Reset von ausgeführten Makros möglich?
18.12.2003 21:14:23
S. Futterknecht
KO,
das hat jetzt geklappt, für was jedoch ist UndoTest?

Wenn ích die Module in mein Makro einbinde, geht es nicht!

Könntest Du mal mein Makro ausführen?

Option Explicit


Private Sub Workbook_Open()
With Sheets("Tabelle1")
.[d6,e7,d9,e10].Locked = True
.ScrollArea = "$C$4:$F$11"
.EnableSelection = 1
.Protect contents:=True
End With
End Sub


Wenn du jetzt nach dem ausführen folgende Änderungen vornimmst (d5 anstatt d6), dann ist nach dem erneuten ausführen d5 und d6 anwählbar.

Das folgende Makro sollte eigentlich wieder aufheben, geht aber leider nicht! Wie binde ich Deines ein?

Option Explicit
Sub aufheben()
With Sheets("Tabelle1")
.Unprotect
.ScrollArea = ""
End With
End Sub


Bis später!

SF
Anzeige
;
Anzeige

Infobox / Tutorial

Reset von ausgeführten Makros in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle eine neue Mappe.

    • Gehe zu Datei > Neu.
  2. Wechsel in den VBA-Editor.

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu.

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.
  4. Kopiere die Makros in das Modul.

    • Füge die folgenden Makros ein:
    Sub UndoTest()
       Application.OnUndo "Eintragung löschen", ThisWorkbook.Name & "!UndoEin"
    End Sub
    
    Sub UndoEin()
       Range("A1:A10").ClearContents
    End Sub
    
    Sub Eintragen()
       Dim intCounter As Integer
       For intCounter = 1 To 10
           Cells(intCounter, 1).Value = intCounter
       Next intCounter
       Call UndoTest
    End Sub
  5. Führe das Makro aus.

    • Gehe zurück zu Excel, und führe das Eintragen-Makro aus, um die Werte in A1:A10 zu setzen.
  6. Nutze die Rückgängig-Funktion.

    • Du kannst nun mit Bearbeiten > Rückgängig die Eintragungen zurücksetzen.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler beim Ausführen eines Makros.

    • Stelle sicher, dass alle Makros korrekt in ein Modul eingefügt wurden und dass das richtige Arbeitsblatt aktiv ist.
  • Problem: Nach erneutem Ausführen sind alte Einstellungen aktiv.

    • Überlege, ob du ein Reset-Makro benötigst, das vor anderen Makros ausgeführt wird, um vorherige Einstellungen zurückzusetzen.

Alternative Methoden

  • Verwendung von Workbook_Open: Du kannst das Workbook_Open-Ereignis nutzen, um beim Öffnen der Datei bestimmte Einstellungen zurückzusetzen.

    Private Sub Workbook_Open()
       With Sheets("Tabelle1")
           .Unprotect
           .ScrollArea = ""
       End With
    End Sub
  • Erstellen eines Reset-Makros: Ein einfaches Reset-Makro kann erstellt werden, um alle Schutzmaßnahmen aufzuheben:

    Sub ResetEinstellungen()
       With Sheets("Tabelle1")
           .Unprotect
           .ScrollArea = ""
           .EnableSelection = xlUnlockedCells
       End With
    End Sub

Praktische Beispiele

  • Beispiel für ein Reset-Makro: Wenn du eine bestehende Tabelle hast, in der die Auswahl auf bestimmte Zellen beschränkt ist, kannst du folgendes Makro verwenden:

    Sub Aufheben()
       With Sheets("Tabelle1")
           .Unprotect
           .ScrollArea = ""
           .EnableSelection = xlUnlockedCells
       End With
    End Sub
  • Beispiel für das Setzen von Schutz: Um bestimmte Zellen zu sperren, kannst du das folgende Makro verwenden:

    Private Sub Workbook_Open()
       With Sheets("Tabelle1")
           .Range("D5,D7,D9,E6,E10").Locked = True
           .ScrollArea = "$C$4:$F$11"
           .Protect contents:=True
       End With
    End Sub

Tipps für Profis

  • Nutze Application.OnUndo: Diese Funktion ermöglicht es dir, benutzerdefinierte Rückgängig-Optionen für deine Makros zu erstellen, was besonders nützlich sein kann, um den Nutzern eine einfache Möglichkeit zur Fehlerkorrektur zu bieten.

  • Modularisierung: Halte deine Makros modular, indem du Funktionen und Subroutinen erstellst, die spezifische Aufgaben erfüllen. So wird dein Code übersichtlicher und leichter zu warten.


FAQ: Häufige Fragen

1. Wie führe ich Makros in Excel aus? Um ein Makro auszuführen, gehe zu Entwicklertools > Makros, wähle das Makro aus und klicke auf Ausführen.

2. Warum funktioniert mein Reset-Makro nicht? Überprüfe, ob das Arbeitsblatt, auf das du zugreifst, korrekt benannt ist und ob es die erforderlichen Berechtigungen hat, um Änderungen vorzunehmen.

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