Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1592to1596
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 nur am Ersten des Monats auführen

Makro nur am Ersten des Monats auführen
01.12.2017 13:01:32
Oliver
Hallo liebe Forum-Freunde,
nach langer Zeit kann ich mich mal wieder etwas Zeit um mich mit meinen Tabellen zu beschäftigen.
Ich möchte gern, das „nur“ am ERSTEN des Monats ein Makro ausgeführt wird.
Hat zufällig jemand eine Idee wie ich das am besten umsetzen kann? Oder hat vielleicht jemand schon etwas Ähnliches?
Ich habe das Thema selbstverständlich schon gegooglet, bin aber mit den hiesigen Lösungen nicht weiter gekommen.
Ich würde mich über eine Antwort sehr freuen und wünsche ein schönes Wochenende.
Viele Grüße
Oliver

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

Betreff
Datum
Anwender
Anzeige
Workbook_Open
01.12.2017 13:18:56
lupo1
...
If Day(Today()) = 1 Then
...
AW: Makro nur am Ersten des Monats auführen
01.12.2017 13:19:12
JoWE
Hallo Oliver,
so z.B.:
Sub makro_am_ersten_Tag_des_Monats()
If Left(Date, 2) * 1 = 1 Then
Call Dein_Makro
Else
Call ein_anderes_makro
End If
End Sub

Gruß
Jochen
AW: Makro nur am Ersten des Monats auführen
01.12.2017 13:59:44
Günther
Moin,
ich bin mir nicht sicher, ob du da nicht "zu kurz gedacht" hast ...
2 Punkte fallen mir da ein:
  1. Wenn du die Datei am 1. des Monats gar nicht öffnest (1. Mai ist ein Feiertag) und
  2. Wenn du die Datei an dem Tag mehrfach öffnest. Wie sieht es damit aus?
AW: Makro nur am Ersten des Monats auführen
04.12.2017 21:18:54
Oliver
Hallo,
vielen lieben Dank für die Antwort. Ich habe das Makro nun eingebunden und bin gespannt ob es am 01.01.2018 automatisch auslöst.
Zu Euren Fragen: Tatsächlich wird die Datei jeden Tag ausgeführt, vollautomatisch und das zweimal am Tag. Das zweite mal am Tag ist aber kein Problem, da das sogar eine Fehlerquelle reduziert. Es wird somit maximal 2 mal am Tag ein Saisonkalender auf einen neuen Monat gestellt.
Vielen lieben Dank.
Beste Grüße
Oliver
Anzeige
AW: Makro nur am Ersten des Monats auführen
02.12.2017 08:17:51
Sepp
Hallo Oliver,
wie Günther schon eingeworfen hat, muss man sicherstellen, dass 1. das Makro nur einmal ausgeführt wird und 2. das die Datei ja nicht unbedingt am 1. eines Monates geöffnet wird.
Teste mal.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
Dim datRun As Date, datAct As Date

datAct = DateSerial(Year(Date), Month(Date), 1)
datRun = GetCustProp(cstrDocProp, DateSerial(1900, 1, 1))

If datRun < datAct Then
  Application.Run (cstrRunWhat)
  Call SetCustProp(cstrDocProp, datAct)
End If
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Const cstrRunWhat As String = "Test" 'Name des Makros das gestartet werden soll
Public Const cstrDocProp As String = "LastRun"

Sub test()
MsgBox "OK"
End Sub

Public Function GetCustProp(propName As String, Optional propValue As Variant) As Variant
' Wert aus Dateieigenschaft auslesen. Wenn nicht vorhanden
' Anlegen und Optional mit Startwert belegen

Dim propType As MsoDocProperties

If Not IsMissing(propValue) Then
  Select Case VarType(propValue)
    Case vbString
      propType = msoPropertyTypeString
    Case vbBoolean
      propType = msoPropertyTypeBoolean
    Case vbByte, vbInteger, vbLong
      propType = msoPropertyTypeNumber
    Case vbSingle, vbDouble
      propType = msoPropertyTypeFloat
    Case vbDate
      propType = msoPropertyTypeDate
    Case Else
  End Select
End If

With ThisWorkbook
  On Error GoTo NoName
  GetCustProp = .CustomDocumentProperties(propName).Value
  Exit Function
  NoName:
  If Err.Number = 5 Then
    Err.Clear
    .CustomDocumentProperties.Add _
      Name:=propName, _
      LinkToContent:=False, _
      Type:=propType, _
      Value:=propValue
    GetCustProp = propValue
  End If
End With
End Function

Public Function SetCustProp(propName As String, propValue As Variant)
' Wert in Dateieigenschaft schreiben. Wenn nicht vorhanden
' Anlegen und Wert eintragen

Dim propType As MsoDocProperties

Select Case VarType(propValue)
  Case vbString
    propType = msoPropertyTypeString
  Case vbBoolean
    propType = msoPropertyTypeBoolean
  Case vbByte, vbInteger, vbLong
    propType = msoPropertyTypeNumber
  Case vbSingle, vbDouble
    propType = msoPropertyTypeFloat
  Case vbDate
    propType = msoPropertyTypeDate
  Case Else
End Select

With ThisWorkbook
  On Error GoTo NoName
  .CustomDocumentProperties(propName).Value = propValue
  Exit Function
  NoName:
  If Err.Number = 5 Then
    Err.Clear
    .CustomDocumentProperties.Add _
      Name:=propName, _
      LinkToContent:=False, _
      Type:=propType, _
      Value:=propValue
  End If
End With
End Function

Gruß Sepp

Anzeige

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige