VBA - Jahr Anpassen bei Finanzjahrwechsel
Moin zusammen,
ich möchte gerne, dass sich in einer bestimmten Zelle (A1) oder Messagebox das Datum je nach dem aktuellen Finanzjahr anpasst. Unser Finanzjahr geht vom 01.04.JJ bis zum 31.03.JJ.
Als Beispiel: wenn das heutige Datum zwischen dem 01.4.2023 und dem 31.03.2024 liegt, soll in der Zelle A1 das Datum 01.04.204 stehen. Ist das heutige Datum beispielsweise der 03.04.2023 oder der der 01.02.2024 muss in der Zelle 01.04.2024 stehen.
Aktuell erhalte ich in den folgenden Zeilen die Fehleranzeige: Fehler beim Kompilieren: Syntaxfehler
If (Month(MeinDatum) < "04") Or
(Month(MeinDatum) = 4 And Day(MeinDatum) = 1)Then
Freue mich über Tipps
VG Mirko
ich möchte gerne, dass sich in einer bestimmten Zelle (A1) oder Messagebox das Datum je nach dem aktuellen Finanzjahr anpasst. Unser Finanzjahr geht vom 01.04.JJ bis zum 31.03.JJ.
Als Beispiel: wenn das heutige Datum zwischen dem 01.4.2023 und dem 31.03.2024 liegt, soll in der Zelle A1 das Datum 01.04.204 stehen. Ist das heutige Datum beispielsweise der 03.04.2023 oder der der 01.02.2024 muss in der Zelle 01.04.2024 stehen.
Sub JahrAnpassen2()
Dim MeinDatum As Date
Dim NeuesDatum As Date
'Aktuelles Datum verwenden
MeinDatum = #6/3/2024#
'Überprüfen, ob das aktuelle Datum zwischen dem 1. April und dem 31. März des nächsten Jahres liegt
If (Month(MeinDatum) < "04") Or
(Month(MeinDatum) = 4 And Day(MeinDatum) = 1)Then
NeuesDatum = DateSerial(Year(MeinDatum), 3, 31)
Else
NeuesDatum = DateSerial(Year(MeinDatum) + 1, 3, 31)
End If
'Das Ergebnis in ein Feld oder eine Zelle schreiben (hier MsgBox als Beispiel)
MsgBox "Das angepasste Datum ist: " & NeuesDatum
End Sub
Aktuell erhalte ich in den folgenden Zeilen die Fehleranzeige: Fehler beim Kompilieren: Syntaxfehler
If (Month(MeinDatum) < "04") Or
(Month(MeinDatum) = 4 And Day(MeinDatum) = 1)Then
Freue mich über Tipps
VG Mirko
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4110528030
Url: https://administrator.de/forum/vba-jahr-anpassen-bei-finanzjahrwechsel-4110528030.html
Ausgedruckt am: 24.12.2024 um 19:12 Uhr
11 Kommentare
Neuester Kommentar
Hi,
Warum immer hard coded? Warum nicht sowas?
Siehe auch:
https://www.classanytime.com/mis333k/sjdatetime.html
Warum immer hard coded? Warum nicht sowas?
'Aktuelles Datum verwenden
MeinDatum = Year(Date)
Siehe auch:
https://www.classanytime.com/mis333k/sjdatetime.html
Zitat von @mirkolando:
Das war nur zum testing. So kann ich einfach verschiedene Daten probieren
Zitat von @mayho33:
Hi,
Warum immer hard coded? Warum nicht sowas?
Siehe auch:
https://www.classanytime.com/mis333k/sjdatetime.html
Hi,
Warum immer hard coded? Warum nicht sowas?
'Aktuelles Datum verwenden
MeinDatum = Year(Date)
Siehe auch:
https://www.classanytime.com/mis333k/sjdatetime.html
Das war nur zum testing. So kann ich einfach verschiedene Daten probieren
Verstehe! Versuche mal das:
Sub ShowDates()
Dim Year, startDate, endDate, currentDate
Year = Format(Date, "yyyy")
startDate = Format("01.04." & Year - 1, "dd/mm/yyyy")
endDate = Format("31.03." & Year, "dd/mm/yyyy")
currentDate = Format(Date, "dd/mm/yyyy")
Cells(1, 1).Value = "busines year START"
Cells(2, 1).Value = startDate
Cells(1, 2).Value = "busines year END"
Cells(2, 2).Value = endDate
Cells(1, 3).Value = "Comparsion"
If ((currentDate >= startDate) And (currentDate <= endDate)) Then
Cells(2, 3).Value = startDate
Else
Cells(2, 3).Value = "oOhhh!! Geschäftsjahr verschlafen!"
End If
End Sub
Moin,
und weil ich auch eine Idee habe
wie du den 01.04. darein bekommst, sei dann dir überlassen.
BTW: hast du noch mehr VBA-Code in dem Dokument oder ist es das einzige, denn das GJ würde man innerhalb von Excel auch komplett ohne VBA ermittelt bekommen.
und weil ich auch eine Idee habe
OPTION EXPLICIT
ON ERROR Resume NEXT
DIM DateFromCell
DIM BY 'BusinessYear / Geschäftsjahr
DateFromCell = "28.11.2023"
if(Month(DateFromCell) < 4) Then
BY = Year(DateAdd("yyyy", -1, DateFromCell))
else
BY = Year(DateFromCell)
end if
wscript.echo DateFromCell
wscript.echo BY
wie du den 01.04. darein bekommst, sei dann dir überlassen.
BTW: hast du noch mehr VBA-Code in dem Dokument oder ist es das einzige, denn das GJ würde man innerhalb von Excel auch komplett ohne VBA ermittelt bekommen.
@mayho33
du hast einen Fehler in Zeile 3-5
Wenn er am 31.12.2023 ist, wäre nach deiner Theorie das Geschäftsjahr vom 01.04.2022 bis 31.03.2023.
Das "aktuelle" Datum würde somit nicht zum Geschäftsjahr passen, obwohl er sich faktisch darin befände.
du hast einen Fehler in Zeile 3-5
Wenn er am 31.12.2023 ist, wäre nach deiner Theorie das Geschäftsjahr vom 01.04.2022 bis 31.03.2023.
Das "aktuelle" Datum würde somit nicht zum Geschäftsjahr passen, obwohl er sich faktisch darin befände.
Zitat von @em-pie:
@mayho33
du hast einen Fehler in Zeile 3-5
Wenn er am 31.12.2023 ist, wäre nach deiner Theorie das Geschäftsjahr vom 01.04.2022 bis 31.03.2023.
Das "aktuelle" Datum würde somit nicht zum Geschäftsjahr passen, obwohl er sich faktisch darin befände.
@mayho33
du hast einen Fehler in Zeile 3-5
Wenn er am 31.12.2023 ist, wäre nach deiner Theorie das Geschäftsjahr vom 01.04.2022 bis 31.03.2023.
Das "aktuelle" Datum würde somit nicht zum Geschäftsjahr passen, obwohl er sich faktisch darin befände.
Aber genau so will der TO das doch haben:
Als Beispiel: wenn das heutige Datum zwischen dem 01.4.2023 und dem 31.03.2024 liegt, soll in der Zelle A1 das Datum 01.04.204 stehen.
Aha! Ich glaube ich habe den Schreibfehler am Ende "...das Datum 01.04.204 stehen" fehlinterpretiert.Dann also so:
Sub ShowDates()
Dim Year, startDate, endDate, currentDate
Year = Format(Date, "yyyy")
startDate = Format("01.04." & Year - 1, "dd/mm/yyyy")
endDate = Format("31.03." & Year, "dd/mm/yyyy")
currentDate = Format(Date, "dd/mm/yyyy")
Cells(1, 1).Value = "business year START"
Cells(2, 1).Value = startDate
Cells(1, 2).Value = "business year END"
Cells(2, 2).Value = endDate
Cells(1, 3).Value = "Comparsion"
If ((currentDate >= startDate) And (currentDate <= endDate)) Then
Cells(2, 3).Value = DateAdd("yyyy", 1, startDate)
Else
Cells(2, 3).Value = "oOhhh!! Geschäftsjahr verschlafen!"
End If
End Sub
Und bevor da jetzt kommt, dass ich in Zeile XY auch noch was anders machen sollte 😜😉:
Wie der TO sich das dann am Ende zusammenbastelt ist eh seine Sache. Es geht, denke ich, ums Vergleichen und die technische Umsetzung. Ich habe das ja auch nur schnell hingerotzt, als anschauliches Beispiel.
Aber Danke für den Hinweis 😉
Quote from @mirkolando:
Zeile 10 und 11 müssen zusammen in einer Zeile stehen.
Das ändert leider nichts
Zeile 10 und 11 müssen zusammen in einer Zeile stehen.
Das ändert leider nichts
Uff, so schwer isses doch nicht, oder? Natürlich muss das "THEN" auch mit auf die gleiche Zeile wie das "IF"...
Tu uns allen doch bitte einen Gefallen und setze den Code in die entsprechendnen Code-Tags. So wird es wesentlich leserlicher.
Adminstrator.de - Formatierungen in den Beiträgen
Schaut soweit gut aus würde ich sagen.
Adminstrator.de - Formatierungen in den Beiträgen
Schaut soweit gut aus würde ich sagen.