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

Forumthread: Makro nur einmal ausführen

Makro nur einmal ausführen
26.11.2018 08:17:09
Jürgen
Hallo liebe Excelperten und Excelperten,
ich habe ein kleines Problem mit dem ich nicht weiterkomme. Ich habe hier ein Excelfile das ein bestimmtes Feld nach dem Inhalt prüft und wenn dort "Digital" drin steht, soll ein Makro ausgeführt werden. Mein Problem: Das Makro soll nur genau einmal ausgeführt werden, da es sonst mit jeder Neuberechnung des Files.....sprich bei jeder Dokumenteingabe die man mit Return bestätigt erneut ausgeführt wird.
Gibt es eine Möglichkeit dass man da irgendwie einen Zähler einbaut der, sobald er auf "1" ist, verhindert, dass das Makro erneut ausgeführt wird ?
So sieht das Makro aus:
Private Sub Worksheet_Calculate()
'If Me.Range("AF19").Value = "Digital" Then
'Makro5
'End If
End Sub
vielen Dank schon mal.
viele Grüße
Jürgen
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro nur einmal ausführen
26.11.2018 08:50:15
Karl-Heinz
Hallo Jürgen,
vielleicht hilft dieses hier:
Sub Makro5()
STATIC MyZaehler as Integer
Zaehler=Zaehler+1: if Zaehler>1 then Exit Sub
End Sub
viele Grüße
Karl-Heinz
AW: Makro nur einmal ausführen
26.11.2018 09:14:33
Jürgen
Hallo Karl-Heinz,
danke für Deine Hilfe. Habe das jetzt so wie von Dir geschrieben eingebaut, aber dann kommt die Fehlermeldung "Fehler beim Kompilieren: Variable nicht definiert" und es wird auf die Variable "Zaehler" verwiesen.
Bei Static hast Du die Variable "MyZaehler" genannt. Liegt das vielleicht daran ?
viele Grüße
Jürgen
Anzeige
AW: Makro nur einmal ausführen
26.11.2018 09:18:33
Karl-Heinz
Sorry,
ja natürlich, hab ich mich vertan. Hatte es nicht getestet.
Sub Makro5()
STATIC Zaehler as Integer
Zaehler=Zaehler+1: if Zaehler>1 then Exit Sub
End Sub

VG KH
AW: Makro nur einmal ausführen
26.11.2018 09:20:54
Jürgen
perfekt. Habe es gerade geändert und es kam keine Fehlermeldung mehr. Jetzt muss ich nur noch kurz testen ob es wie gewünscht funktioniert.
Ist diese Variable beim Start der Datei immer automatisch auf 0 ?
viele Grüße
Jürgen
Anzeige
AW: Makro nur einmal ausführen
26.11.2018 09:30:06
Karl-Heinz
Hallo Jürgen,
da es ja keine Konstante ist, ist die Variable zunächst auf 0.
STATIC bedeutet: Variable ist nur in dieser Sub gültig und verliert ihren Wert auch nicht nach Verlassen der Sub. Ist also beim nächsten Aufruf mit ihrem letzten Wert noch vorhanden.
Hättest Du 'DIM Zeahler as integer' verwendet, wäre die Variable bei jedem Aufruf der Sub immer wieder 0 gewesen.
viele Grüße
Karl-Heinz
Anzeige
AW: Makro nur einmal ausführen
26.11.2018 09:38:47
Jürgen
Hallo Karl-Heinz,
vielen Dank für die Erklärung. Wieder was gelernt. Diesen Unterschied kannte ich so noch nicht.
Also nochmal vielen Dank für Deine Hilfe. Mittlerweile schon getestet und funktioniert genau wie geplant.
viele Grüße und ne schöne Woche
Jürgen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro nur einmal ausführen in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel so zu gestalten, dass es nur einmal ausgeführt wird, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne das Excel-Dokument, in dem du das Makro implementieren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge das folgende Makro in das entsprechende Arbeitsblatt ein:

    Private Sub Worksheet_Calculate()
       If Me.Range("AF19").Value = "Digital" Then
           Call Makro5
       End If
    End Sub
    
    Sub Makro5()
       Static Zaehler As Integer
       Zaehler = Zaehler + 1
       If Zaehler > 1 Then Exit Sub
       ' Deine Makro-Befehle hier
    End Sub
  4. Speichere die Änderungen und schließe den VBA-Editor.

  5. Teste das Makro, indem du die Zelle AF19 auf "Digital" setzt und eine Neuberechnung auslöst (z.B. durch Eingabe in einer anderen Zelle).


Häufige Fehler und Lösungen

  • Fehlermeldung: "Variable nicht definiert"
    Diese Fehlermeldung tritt auf, wenn die Variable im Code nicht korrekt deklariert ist. Stelle sicher, dass die Variable Zaehler in der Zeile Static Zaehler As Integer korrekt geschrieben ist.

  • Makro wird mehrmals ausgeführt
    Wenn das Makro mehr als einmal ausgeführt wird, überprüfe, ob die Bedingung in If Zaehler > 1 Then Exit Sub korrekt ist. Achte darauf, dass du Static verwendest, um den Wert der Variable zwischen den Aufrufen zu speichern.


Alternative Methoden

Falls du nach einer anderen Möglichkeit suchst, das Makro nur einmal auszuführen, kannst du auch eine globale Variable verwenden, die in einem Modul deklariert wird:

  1. Erstelle ein neues Modul im VBA-Editor.

  2. Deklariere die Variable:

    Global Zaehler As Integer
  3. Ändere das Makro wie folgt:

    Sub Makro5()
       Zaehler = Zaehler + 1
       If Zaehler > 1 Then Exit Sub
       ' Deine Makro-Befehle hier
    End Sub

Diese Methode hat den Nachteil, dass die Variable den Wert auch nach dem Schließen von Excel behält, was in manchen Fällen unerwünscht sein kann.


Praktische Beispiele

Ein Beispiel, bei dem das Makro auf eine Änderung in Zelle AF19 reagiert und nur einmal ausgeführt wird:

Private Sub Worksheet_Calculate()
    If Me.Range("AF19").Value = "Digital" Then
        Call Makro5
    End If
End Sub

Sub Makro5()
    Static Zaehler As Integer
    Zaehler = Zaehler + 1
    If Zaehler > 1 Then Exit Sub
    MsgBox "Das Makro wurde erfolgreich ausgeführt!"
End Sub

In diesem Beispiel wird ein Meldungsfenster angezeigt, wenn das Makro das erste Mal ausgeführt wird.


Tipps für Profis

  • Nutze Static für Variablen, die ihren Wert zwischen den Aufrufen behalten sollen.
  • Überlege, ob du das Makro in einem bestimmten Ereignis (z.B. Worksheet_Change) ausführen möchtest, um mehr Kontrolle über die Ausführung zu haben.
  • Dokumentiere deinen Code gut, damit andere (oder du selbst) ihn später leichter verstehen.

FAQ: Häufige Fragen

1. Wird die Variable Zaehler beim Start der Datei automatisch auf 0 gesetzt?
Ja, da Static verwendet wird, ist die Variable zu Beginn auf 0.

2. Kann ich das Makro auch für andere Bedingungen verwenden?
Ja, du kannst die Bedingung in der If-Anweisung anpassen, um verschiedene Werte zu überprüfen.

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