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

Makro nur einmal ausführen

Forumthread: Makro nur einmal ausführen

Makro nur einmal ausführen
20.06.2006 11:27:26
Falk
Hallo alle zusammen,
folgendes Makro fügt in die Zelle H34 ein "Ja" ein, berechnet und fügt dann ein "Nein" ein.

Sub JA_Eingabe()
Range("H34").Select
ActiveCell.FormulaR1C1 = "Ja"
Calculate
Range("H34").Select
ActiveCell.FormulaR1C1 = "Nein"
Calculate
End Sub

Soweit so gut, ich benötige jetzt eine Erweiterung dieses Makros, das dieses Makro nur einmal durchführt wenn die Datei geöffnet worden ist, sonst nie mehr.
Beim nächsten öffnen dann wieder nur einmal durchführen kann.
Geht das, und wenn ja wie?
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro nur einmal ausführen
20.06.2006 11:41:20
Andi
Hi,
wenn es beim Öffnen automatisch ausgeführt werden soll, dann schreib das Makro in's Workbook_Open-Ereignis im Modul 'DieseArbeitsmappe'.
Wenn's erlaubt ist, noch ein paar Anmerkungen zu Deinem Code:
Select macht ein Makro langsam, unübersichtlich und ist in 99,9% aller Fälle schlicht überflüssig;
Range("H34").Select
ActiveCell.FormulaR1C1 = "Ja"
kannst Du auch so schreiben:
Range("H34").Value = "Ja"
Nachdem vermutlich nicht unbedingt gewährleistet ist, dass immer das richtige Blatt aktiv ist, würde ich die Zelle komplett mit Angabe der Tabelle referenzieren;
der komplette Code in 'DieseArbeitsmappe' sieht dann so aus, wobei Du den Tabellennamen ggf noch anpassen musst:

Private Sub Workbook_Open()
Sheets("Tabelle1").Range("H34").Value = "Ja"
Calculate
Sheets("Tabelle1").Range("H34").Value = "Nein"
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Makro nur einmal ausführen
20.06.2006 12:01:34
Falk
Hallo Andi,
erst einmal Danke für Dein Hinweis, baue mein Makro um, aber ...
... das Makro wird nur über einen Button ausgeführt der auf dem entsprechenden Blatt steht. Hintergrund ist, mit einer DBSET2 Formel (MIS ALEA) kann ich Werte in einer Datenbank schreiben und gleichzeitig addieren, daß soll aber nur einmal, dann wenn ich den Button drücke geschehen. Ich weiß das ich nur einmal drücken darf, meine Vertretung ist nicht ganz so bewandert und kann evtl. hier einen Fehler machen und evtl. die Werte doppelt einlesen.
Kannst Du weiterhelfen, Deine Änderungen verarbeite ich sofort.
Grüß und Dank
Falk
Anzeige
AW: Makro nur einmal ausführen
20.06.2006 12:07:15
Andi
Hi,
dann deaktivieren wir am besten den Button nach einmaligem drücken:

Private Sub CommandButton1_Click()
Range("H34").Value = "Ja"
Calculate
Range("H34").Value = "Nein"
CommandButton1.Enabled = False
End Sub

Wenn der Button eh in der Tabelle ist, dann kann die Referenzierung über Sheets("Tabelle1"). entfallen.
Ins Workbook_open gehört dann nur folgendes, damit der Knopf nach dem Öffnen wieder zur Verfügung steht:

Private Sub Workbook_Open()
Sheets("Tabelle1").CommandButton1.Enabled = True
End Sub

Schönen Gruß,
Andi
Anzeige
AW: Makro nur einmal ausführen
20.06.2006 12:21:40
Falk
Hi, Andi
jetzt scheint das Makro zu schnell zu sein! Warum auch immer, mit meinem Button aus dem Formular Menü funktionierte das Makro.
Den CommandButton aktivieren und deaktivieren funktioniert auch, nur die Berechnung nicht, ...
Grüße
Falk
AW: Makro nur einmal ausführen
20.06.2006 14:02:57
Andi
Hi,
sorry, den Effekt kann ich bei mir nicht nachvollziehen.
Kopiere mal folgendes ins Modul der Tabelle, dann bekommst Du ne Meldung, wenn das Blatt berechnet wird:

Private Sub Worksheet_Calculate()
MsgBox "Berechnung durchgeführt"
End Sub

Wenn die Meldung kommt, wird calculate ganz normal ausgeführt, und das Problem liegt woanders.
Schönen Gruß,
Andi
Anzeige
AW: Makro nur einmal ausführen
20.06.2006 14:08:17
Falk
Hi Andi,
habe das Problem jetzt wie folgt gelöst:

Sub JA()
ActiveSheet.Unprotect
Sheets("Summe").Range("H34").Value = "Ja"
Calculate
Sheets("Summe").Range("H34").Value = "Nein"
Calculate
ActiveSheet.Protect
ActiveSheet.Shapes("Button 250").Visible = False
End Sub

Habe eine Schaltfläche benutzt die ausgeblendet wird, wenn die Datei geöffnet wird, wird die Schaltfläche wieder eingeblendet.
Jetzt funktioniert es perfekt, danke für Deine Hilfe, die hat mich richtig nach vorne gebracht.
Danke
Falk
Anzeige
Gern geschehen...
20.06.2006 14:15:40
Andi
Danke für die Rückmeldung.
Schönen Gruß,
Andi
;
Anzeige

Infobox / Tutorial

Makro nur einmal ausführen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der du das Makro erstellen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf das Projekt im Projekt-Explorer.
    • Wähle „Einfügen“ > „Modul“.
  4. Kopiere und füge den folgenden Code ein:
Sub JA_Eingabe()
    Sheets("Tabelle1").Range("H34").Value = "Ja"
    Calculate
    Sheets("Tabelle1").Range("H34").Value = "Nein"
End Sub
  1. Füge den Code in das Workbook_Open-Ereignis ein:
    • Doppelklicke auf „DieseArbeitsmappe“ im Projekt-Explorer.
    • Kopiere den folgenden Code:
Private Sub Workbook_Open()
    Sheets("Tabelle1").CommandButton1.Enabled = True
End Sub
  1. Füge den Button hinzu:
    • Gehe zurück zu deinem Excel-Blatt.
    • Wähle „Entwicklertools“ > „Einfügen“ > „Schaltfläche (Formularsteuerung)“ und ziehe die Schaltfläche auf die Tabelle.
  2. Kopiere den folgenden Code in das Schaltflächen-Ereignis:
Private Sub CommandButton1_Click()
    Sheets("Tabelle1").Range("H34").Value = "Ja"
    Calculate
    Sheets("Tabelle1").Range("H34").Value = "Nein"
    CommandButton1.Enabled = False
End Sub
  1. Speichere die Datei als „Excel-Makro-fähige Arbeitsmappe“ (.xlsm).

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind. Gehe zu „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“ > „Makroeinstellungen“ und aktiviere die Option „Alle Makros aktivieren“.
  • Fehler: Der Button bleibt aktiv, auch nachdem das Makro ausgeführt wurde.

    • Lösung: Überprüfe, ob der Code zur Deaktivierung des Buttons korrekt im CommandButton1_Click()-Ereignis eingefügt wurde.

Alternative Methoden

Eine andere Möglichkeit, ein Makro nur einmal auszuführen, ist die Verwendung von Zellenwerten oder Flags. Du kannst eine Zelle verwenden, um zu speichern, ob das Makro bereits ausgeführt wurde. Wenn der Wert in dieser Zelle bereits gesetzt ist, überspringt das Makro die Ausführung.

Sub JA_Eingabe()
    If Sheets("Tabelle1").Range("A1").Value = "" Then
        Sheets("Tabelle1").Range("H34").Value = "Ja"
        Calculate
        Sheets("Tabelle1").Range("H34").Value = "Nein"
        Sheets("Tabelle1").Range("A1").Value = "Executed"
    End If
End Sub

Praktische Beispiele

  1. Makro beim Öffnen der Datei: Wenn du das Makro automatisch beim Öffnen der Datei ausführen möchtest, platziere den Code im Workbook_Open()-Ereignis.

  2. Button zur Ausführung des Makros: Füge einen Button hinzu, der das Makro ausführt. Achte darauf, dass der Button nach der ersten Ausführung deaktiviert wird.


Tipps für Profis

  • Vermeide die Verwendung von .Select und ActiveCell, um die Performance zu verbessern. Verwende stattdessen direkte Zellreferenzen wie Sheets("Tabelle1").Range("H34").Value.
  • Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler abzufangen.
On Error GoTo Fehlerbehandlung
' Dein Code hier
Exit Sub
Fehlerbehandlung:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Makro nur einmal pro Sitzung ausgeführt wird?
Du kannst eine Zelle als Statusflag verwenden, um zu überprüfen, ob das Makro bereits ausgeführt wurde. Setze den Wert dieser Zelle nach der Ausführung des Makros.

2. Funktioniert das Makro in allen Excel-Versionen?
Ja, das Makro funktioniert in Excel 2010 und späteren Versionen. Achte darauf, dass die Entwickleroptionen aktiviert sind, um Makros zu nutzen.

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