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

Forumthread: VBA: Monate addieren \letzten Tag berechnen

VBA: Monate addieren \letzten Tag berechnen
22.04.2017 21:10:57
jam
Hallo zusammen,
Ich hoffe, ihr könnt mir helfen.
Folgende Anforderung:
Auf das eingegebene Startdatum sollen immer 18 Monate addiert werden.
Das Enddatum muss aber, wenn es nötig wird, immer mit dem letzten Tag des (Vor-)Monats abschliessen.
Beispiel 1:
Startdatum: 01.05.2017
Enddatum: 31.10.2018 UND NICHT 01.11.2018
Beispiel 2:
Startdatum: 02.06.2017
Enddatum: 30.11.2018 UND NICHT 01.12.2018
Mit dem u.g. vba String addiere ich die 18 Monate auf das Startdatum, aber wie muss der Code lauten, damit die 18 Monate, wenn es notwendig wird, auf den letzten Tag des Vormonats berechnet werden und nicht auf den ersten Tag des Folgemonats?
dtNewDate = DateAdd("m", 18, dtOldDate)
Vielen Dank für eure Hilfe\Lösungsansätze.
Gruss
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Monate addieren \letzten Tag berechnen
22.04.2017 21:38:59
Luschi
Hallo jam,
dann teste mal diesen Vba-Code

Sub test1()
dtOldDate = CDate("01.05.2017")
dtNewdate = DateAdd("m", 18, dtOldDate)
Debug.Print dtNewdate
dtNewdate = DateSerial(Year(dtNewdate), Month(dtNewdate), 0)
Debug.Print dtNewdate
dtOldDate = CDate("08.05.2017")
dtNewdate = DateAdd("m", 18, dtOldDate)
Debug.Print dtNewdate
dtNewdate = DateSerial(Year(dtNewdate), Month(dtNewdate), 0)
Debug.Print dtNewdate
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA: Monate addieren \letzten Tag berechnen
22.04.2017 21:44:51
Werner
Hallo Jam,
zum Testen, dtOldDate steht in Zelle A1
Public Sub aaa()
Dim dtOldDate As Date
Dim dtNewDate As Date
dtOldDate = Range("A1")
dtNewDate = WorksheetFunction.EoMonth(DateAdd("m", 18, dtOldDate), -1)
MsgBox dtNewDate
End Sub
Gruß Werner
Anzeige
AW: VBA: Monate addieren \letzten Tag berechnen
22.04.2017 22:13:15
Gerd
Hallo
Sub ccc()
Dim dteOld As Date, dteNew As Date, lngMonth As Long
lngMonth = 18
dteOld = CDate("01.05.2017")
dteNew = DateSerial(Year(dteOld), Month(dteOld) + lngMonth, 0)
MsgBox dteOld & vbLf & lngMonth & vbLf & dteNew
End Sub

Gruß Gerd
Anzeige
Antworten-ja, mehrere / Feedback-nein, schade
27.04.2017 09:53:54
Werner

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Monate addieren und letzten Tag berechnen in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA Monate zu einem Datum hinzuzufügen und dabei den letzten Tag des Vormonats zu berücksichtigen, kannst du folgenden Schritten folgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere und füge den folgenden Code ein:
Sub MonateAddieren()
    Dim dtOldDate As Date
    Dim dtNewDate As Date

    ' Startdatum aus Zelle A1
    dtOldDate = Range("A1").Value

    ' 18 Monate hinzufügen und letzten Tag des Vormonats berechnen
    dtNewDate = WorksheetFunction.EoMonth(DateAdd("m", 18, dtOldDate), -1)

    ' Ergebnis anzeigen
    MsgBox "Das neue Datum ist: " & dtNewDate
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Gib ein Startdatum in Zelle A1 ein.
  3. Führe das Makro "MonateAddieren" aus, um das Enddatum zu berechnen.

Häufige Fehler und Lösungen

  • Fehler: "Typkonflikt" beim Ausführen des Codes.

    • Lösung: Stelle sicher, dass das Datum in Zelle A1 im richtigen Datumsformat eingegeben wurde.
  • Fehler: Das Ergebnis ist ein unerwartetes Datum.

    • Lösung: Überprüfe, ob der EoMonth-Befehl korrekt verwendet wird, um den letzten Tag des Vormonats zu berechnen.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch Excel-Formeln nutzen:

  1. Verwende die Formel =EOMONTH(A1 + 18, -1), um 18 Monate zu einem Datum in Zelle A1 hinzuzufügen und den letzten Tag des Vormonats zu erhalten.
  2. Du kannst auch die Funktion DATE nutzen, um das Datum zu berechnen, z.B.:
    =DATE(YEAR(A1), MONTH(A1) + 18, 1) - DAY(DATE(YEAR(A1), MONTH(A1) + 18 + 1, 1))

Praktische Beispiele

Hier sind einige Beispiele, wie du Monate zu einem Datum in Excel addieren kannst:

  • Beispiel 1:

    • Startdatum: 01.05.2017
    • Ergebnis nach 18 Monaten: 31.10.2018
  • Beispiel 2:

    • Startdatum: 02.06.2017
    • Ergebnis nach 18 Monaten: 30.11.2018

Du kannst diese Daten in Zelle A1 eingeben und das VBA-Makro oder die Excel-Formel ausführen, um die Ergebnisse zu erhalten.


Tipps für Profis

  • Verwende vba eomonth, um einfach den letzten Tag des Monats zu berechnen, wenn du mit Datumsberechnungen arbeitest.
  • Wenn du mehrere Monate addieren möchtest, kannst du die Funktion DateAdd in VBA nutzen, um eine flexible Lösung zu schaffen.
  • Achte darauf, dass dein Excel-Dokument im richtigen Datumsformat gespeichert ist, um Komplikationen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehr als 18 Monate hinzufügen? Du kannst einfach den Wert in der DateAdd-Funktion ändern, z.B. DateAdd("m", 24, dtOldDate) für 24 Monate.

2. Was passiert, wenn das Startdatum im Februar ist? Das Makro berücksichtigt automatisch die unterschiedlichen Tagesanzahlen der Monate und berechnet das korrekte Enddatum.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige