Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Makro nur einmal pro Tag ausführen

626 views
Skip to first unread message

Michael Günther

unread,
Apr 4, 2000, 3:00:00 AM4/4/00
to
Hallo,
gibt es eine Möglichkeit, das man ein Makro nur einmal am Tag ausführen
kann. Das Makro das ich geschrieben habe soll in einer Datei bestimmte
Zellen mit NULL überschreiben, speichern und die Datei dann schließen. Das
darf aber pro Tag nur einmal gemacht werden.
Leider sind meine Kollegen etwas sorglos im Umgang mit der Datei und da
kommt es öfter vor, das einer 2 oder mehrmals mit der Schaltfläche Ende die
Datei verläßt.
Weiß jemand vielleicht Abhilfe ?

Mfg
Michael Günther

Robert Gelbmann

unread,
Apr 4, 2000, 3:00:00 AM4/4/00
to
Hallo Michael!

Wie wäre es wie folgt:

Du schreibst in eine Zelle (hier habe ich eine Zelle mit
Einfügen/Namen/Festlegen bzw. auf Neu-Office: Einfügen/Name/Definieren als
"LetzterStart" benannt) via Programm beim Ausführen das aktuelle Datum.
Beim jedem Ausführen wird außerdem geprüft, ob das aktuelle Datum (Date)
größer als das dort gespeicherte ist. Nur in diesem Fall wird das
eigentliche Programm dann ausgeführt.

Die besagte Zelle könntest Du beispielsweise unter der Schaltfläche
verstecken oder auf einem eigenen Blatt erstellen, das Du dann ausblendest
(Format/Blatt/Ausblenden) ...

Der VBA-Code dazu:

'---snip---
Sub NurEinmalTaeglich()
If Range("LetzterStart").Value < Date Then
Call MeinProgramm
End If
End Sub

Sub MeinProgramm()
MsgBox "Das eigentliche Programm!"
Range("LetzterStart").Value = Date
' Speichern erst nachher!
End Sub
'---snip---


In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen

Servus aus Wien,
-Robert Gelbmann-

---
MS MVPCE für Excel
<rgel...@mvps.org>


---"Michael Günther" <Michael....@swhamm.de> schrieb im Newsbeitrag
news:OpUMhfmn$GA.241@cppssbbsa05...

Michael Günther

unread,
Apr 4, 2000, 3:00:00 AM4/4/00
to
Hallo Robert,

man das war ja ein Klasse Tip. Habe ich gleich ausprobiert. Klappt ganz
wunderbar. Vielen vielen Dank.

Michael


Robert Gelbmann <rgel...@mvps.org> schrieb in im Newsbeitrag:
u17Im2mn$GA.293@cppssbbsa05...

Michael Günther

unread,
Apr 4, 2000, 3:00:00 AM4/4/00
to
Hallo Robert,

ich habe das Makro wie folgt definiert:

Sub NurEinmalTaeglich()
If Range("LetzterStart").Value < Date Then

Call Schließen
End If
End Sub

Sub Schließen()
Range("A1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
ActiveWorkbook.Save
ActiveWindow.Close

End Sub

Beim ersten Versuch klappt es einwandfrei. Sobald das Datum dann in der
Zelle steht klappt es aber nicht mehr. Was mache ich falsch?

Michael

Michael Günther

unread,
Apr 5, 2000, 3:00:00 AM4/5/00
to
Hallo Robert,

klappt doch noch nicht. Wenn ich das Datum von heute auf morgen ändere und
die Datei wieder aufrufe steht in der Zelle das aktuelle Datum. Das holt er
sich ja aus den Systemeinstellungen. Kann man das Datum auch so einfügen das
am nächsten Tag immer noch das vom Vortag steht.

Michael


Michael Günther <Michael....@swhamm.de> schrieb in im Newsbeitrag:
eKruRWnn$GA.1160@cppssbbsa06...


| Hallo Robert,
|
| man das war ja ein Klasse Tip. Habe ich gleich ausprobiert. Klappt ganz
| wunderbar. Vielen vielen Dank.
|
| Michael
|
|
| Robert Gelbmann <rgel...@mvps.org> schrieb in im Newsbeitrag:
| u17Im2mn$GA.293@cppssbbsa05...
| | Hallo Michael!
| |
| | Wie wäre es wie folgt:
| |
| | Du schreibst in eine Zelle (hier habe ich eine Zelle mit
| | Einfügen/Namen/Festlegen bzw. auf Neu-Office: Einfügen/Name/Definieren
als
| | "LetzterStart" benannt) via Programm beim Ausführen das aktuelle Datum.
| | Beim jedem Ausführen wird außerdem geprüft, ob das aktuelle Datum (Date)
| | größer als das dort gespeicherte ist. Nur in diesem Fall wird das
| | eigentliche Programm dann ausgeführt.
| |
| | Die besagte Zelle könntest Du beispielsweise unter der Schaltfläche
| | verstecken oder auf einem eigenen Blatt erstellen, das Du dann
ausblendest
| | (Format/Blatt/Ausblenden) ...
| |
| | Der VBA-Code dazu:
| |
| | '---snip---

| | Sub NurEinmalTaeglich()
| | If Range("LetzterStart").Value < Date Then

| | Call MeinProgramm
| | End If
| | End Sub
| |

Robert Gelbmann

unread,
Apr 5, 2000, 3:00:00 AM4/5/00
to
Hallo Michael!

> ActiveCell.FormulaR1C1 = "=TODAY()"

Da ging es etwas daneben! Der Trick ist ja gerade, daß man/frau nicht die
Tabellenfunktion =HEUTE als Formel verwendet, die sich bei jeder
Aktualisierung verändert und dementsprechend immer dem aktuellen Datum
entspricht.

Bleib daher bei der erwähnten Variante:
ActiveCell.Value = Date

Diese fügt das (in VBA ermittelte) heutige (System)-Datum als statischen
Wert in die betreffende Zelle ein und muß daher nach jedem Programmablauf
kurz vor der Speicherung nochmals eingetragen werden.

Jörg Nissen

unread,
Apr 5, 2000, 3:00:00 AM4/5/00
to
Hallo Michael,

wenn Du in die Zelle nicht die Formel "HEUTE()" schreibst
(ActiveCell.FormulaR1C1 = "=TODAY()"), sondern das Ergebnis der
Today-Funktion (ActiveCell.Value = Today()), dann sollte es so
funktionieren, wie Du es Dir vorstellst.


Jörg

"Michael Günther" <Michael....@swhamm.de> schrieb im Newsbeitrag

news:#e$yyhnn$GA.784@cppssbbsa06...
: Hallo Robert,

: | |
: | |
: | | In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen

: |
: |
: |
:
:


Jörg Nissen

unread,
Apr 5, 2000, 3:00:00 AM4/5/00
to
Natürlich ActiveCell.Value = Date...


"Jörg Nissen" <joerg....@t-online.de> schrieb im Newsbeitrag
news:uebKgdtn$GA.1148@cppssbbsa06...
: Hallo Michael,

: : |
: :
: :
:


0 new messages