Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1032to1036
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

makro einmal im jahr

makro einmal im jahr
17.12.2008 18:12:00
Sonja
hallo guten abend,
ich habe mal wieder ein kleines problemchen und hoffe das ihr mir weiterhelfen könnt.
in meiner tabelle wird per makro die spalte F kopiert und alle daten werden in die spalte
E eingefügt um mit diesen daten weitere berechnungen machen zu können.
nun darf das aber nur einmal pro Jahr also im laufendem jahr gemacht werden, sonst werden die daten
verfälscht.
hättet ihr dazu einen vorschlag?
viele grüße
sonja

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Vorschlag!
17.12.2008 18:27:00
Backowe
Hi Sonja,
VBA-Code:
Private Sub Workbook_Open()
'Code in DieseArbeitsmappe
If Date = "17.12.2008" Then
  Call DeinMakro
End If
End Sub
Sub DeinMakro()
'Code in ein Modul
MsgBox "Test bestanden!"
End Sub
Gruß Jürgen
AW: makro einmal im jahr
fcs

Hallo Sonja,
lasse das Makro eine Zelle Prüfen, in der das aktuelle Jahr eingetragen wird.
Wird das Makro nach dem Jahreswechsel das 1. mal ausgeführt, dann wird auch das aktuelle Jakr eingetragen.
Danach wird das Makro jeweils abgebrochen.
Das schützt natürlich nicht gegen bewußte Manipulation, aber gegen versehentliches Ausführen des Makros.
Gruß
Franz
Beispiel:

Sub KopiereSpalteF()
'Prüfen, ob in Zelle G1 das aktuelle jahr steht
If Range("G1") = Year(Date) Then
MsgBox "Diese Makro darf nur einmal pro Jahr ausgeführt werden"
Else
Columns(6).Copy
Columns(5).PasteSpecial Paste:=xlPasteValues
'Aktuelles Jahr in Zelle G1 eintragen
Application.CutCopyMode = False
Range("G1") = Year(Date)
Range("e1").Select
End If
End Sub


Oder mit DateSerial!
Backowe

Hi Sonja,
VBA-Code:
Private Sub Workbook_Open()
'Code in DieseArbeitsmappe
If Date = DateSerial(Year(Date), 12, 17) Then
  Call DeinMakro
End If
End Sub
Sub DeinMakro()
'Code in ein Modul
MsgBox "Test bestanden!"
End Sub
Gruß Jürgen
AW: Danke
Sonja

Hallo Ihr zwei
das ging ja schnell ich werde das gleich mal testen.
vielen dank und wie immer 1000 küsse
sonja
AW: Danke
Daniel

Hi
die genannten Makros haben den Nachteil, daß die Datei immer am 17. Dezember des Jahres geöffnet werden muss und zwar an diesem Tag nur 1x.
das folgende Marko würde die Aktion auch 1x ausführen und zwar immer dann, wenn die Datei im neuen Jahr zum ersten mal geöffnet wird (egal wann):

Private Sub Workbook_Open()
If Year(Date) > Year(CDate(FileDateTime(ThisWorkbook.Path))) Then
'Hier deinen MakroCode einfügen oder Makro mit Call aufrufen
End If
End Sub


oder, wenn du dieses Makro selber aufrufen willst, aber sicherstellen musst, daß es nur 1x im Kalenderjahr aufgerufen wird, dann müsstest du das Datum, wann das Makro gelaufen ist, in einer Zelle hinterlegen und prüfen:


Sub DeinMakro
If Year(Date) = Sheets(1).Range("A1").value Then
msgbox "Dieses Makro ist in diesem Jahr schon mal gestartet worden"
Else
'hier dein MakroCode
Sheets(1).Range("A1").value = year(date)
end if
end sub


Gruß, Daniel

Anzeige
AW: makro einmal im jahr
17.12.2008 18:35:15
fcs
Hallo Sonja,
lasse das Makro eine Zelle Prüfen, in der das aktuelle Jahr eingetragen wird.
Wird das Makro nach dem Jahreswechsel das 1. mal ausgeführt, dann wird auch das aktuelle Jakr eingetragen.
Danach wird das Makro jeweils abgebrochen.
Das schützt natürlich nicht gegen bewußte Manipulation, aber gegen versehentliches Ausführen des Makros.
Gruß
Franz
Beispiel:

Sub KopiereSpalteF()
'Prüfen, ob in Zelle G1 das aktuelle jahr steht
If Range("G1") = Year(Date) Then
MsgBox "Diese Makro darf nur einmal pro Jahr ausgeführt werden"
Else
Columns(6).Copy
Columns(5).PasteSpecial Paste:=xlPasteValues
'Aktuelles Jahr in Zelle G1 eintragen
Application.CutCopyMode = False
Range("G1") = Year(Date)
Range("e1").Select
End If
End Sub


Anzeige
Oder mit DateSerial!
17.12.2008 18:38:00
Backowe
Hi Sonja,
VBA-Code:
Private Sub Workbook_Open()
'Code in DieseArbeitsmappe
If Date = DateSerial(Year(Date), 12, 17) Then
  Call DeinMakro
End If
End Sub
Sub DeinMakro()
'Code in ein Modul
MsgBox "Test bestanden!"
End Sub
Gruß Jürgen
AW: Danke
Sonja

Hallo Ihr zwei
das ging ja schnell ich werde das gleich mal testen.
vielen dank und wie immer 1000 küsse
sonja
AW: Danke
Daniel

Hi
die genannten Makros haben den Nachteil, daß die Datei immer am 17. Dezember des Jahres geöffnet werden muss und zwar an diesem Tag nur 1x.
das folgende Marko würde die Aktion auch 1x ausführen und zwar immer dann, wenn die Datei im neuen Jahr zum ersten mal geöffnet wird (egal wann):

Private Sub Workbook_Open()
If Year(Date) > Year(CDate(FileDateTime(ThisWorkbook.Path))) Then
'Hier deinen MakroCode einfügen oder Makro mit Call aufrufen
End If
End Sub


oder, wenn du dieses Makro selber aufrufen willst, aber sicherstellen musst, daß es nur 1x im Kalenderjahr aufgerufen wird, dann müsstest du das Datum, wann das Makro gelaufen ist, in einer Zelle hinterlegen und prüfen:


Sub DeinMakro
If Year(Date) = Sheets(1).Range("A1").value Then
msgbox "Dieses Makro ist in diesem Jahr schon mal gestartet worden"
Else
'hier dein MakroCode
Sheets(1).Range("A1").value = year(date)
end if
end sub


Gruß, Daniel

Anzeige
AW: Danke
17.12.2008 18:42:00
Sonja
Hallo Ihr zwei
das ging ja schnell ich werde das gleich mal testen.
vielen dank und wie immer 1000 küsse
sonja
AW: Danke
18.12.2008 13:05:32
Daniel
Hi
die genannten Makros haben den Nachteil, daß die Datei immer am 17. Dezember des Jahres geöffnet werden muss und zwar an diesem Tag nur 1x.
das folgende Marko würde die Aktion auch 1x ausführen und zwar immer dann, wenn die Datei im neuen Jahr zum ersten mal geöffnet wird (egal wann):

Private Sub Workbook_Open()
If Year(Date) > Year(CDate(FileDateTime(ThisWorkbook.Path))) Then
'Hier deinen MakroCode einfügen oder Makro mit Call aufrufen
End If
End Sub


oder, wenn du dieses Makro selber aufrufen willst, aber sicherstellen musst, daß es nur 1x im Kalenderjahr aufgerufen wird, dann müsstest du das Datum, wann das Makro gelaufen ist, in einer Zelle hinterlegen und prüfen:


Sub DeinMakro
If Year(Date) = Sheets(1).Range("A1").value Then
msgbox "Dieses Makro ist in diesem Jahr schon mal gestartet worden"
Else
'hier dein MakroCode
Sheets(1).Range("A1").value = year(date)
end if
end sub


Gruß, Daniel

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige