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

Forumthread: Monatsletzter mit VBA ermitteln

Monatsletzter mit VBA ermitteln
Joni
Hi,
ich möchte aus dem Zeitwert Now (Datum + Zeit) auf den Monatsletzten des Vormonats und den des aktuellen Monats kommen. Die Zeit ist mir dabei egal. Das mit dem Monatsersten habe ich hinbekommen. Das mit dem Letzten möchte ich ohne den Umweg, dass ich bei jedem Monat die Tagesanzahl definieren muss (und da ist dann noch der Februar?) , hinbekommen.
Da dies vermutlich schon öfters gebraucht wurde (ich allerdings mit der Suche auf keine mit passende Lösung gekommen bin) hoffe ich auf eure Unterstützung.
Danke
Gruß Joni
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Monatsletzter mit VBA ermitteln
02.11.2009 12:04:01
Worti
Hallo Joni,
so sollte es gehen:
Sub MonatsLetzte()
Dim Tag
Dim Monat
Dim Jahr
Dim MonatsletzterVormonat
Dim MonatsletzterAktuell
Tag = Day(Now)
Monat = Month(Now)
Jahr = Year(Now)
MonatsletzterVormonat = Day(DateSerial(Jahr, Monat, 0))
MonatsletzterAktuell = Day(DateSerial(Jahr, Monat + 1, 0))
End Sub

Gruß Worti
Anzeige
AW: Monatsletzter mit VBA ermitteln
02.11.2009 12:35:41
Joni
Hallo Worti,
auch deine Lösung hätte mich ans Ziel gebracht. Die von Werner ist noch etwas kompakter, da die Variablen nicht noch zusätzlich definiert werden.
Das 1 - 1 für den Tag statt 0 war mir im ersten Moment einleuchtender. Nach dem Durchblick ist auch 0 klar.
Auch jeden Fall auch dir danke!
Gruß Joni
Anzeige
AW: Monatsletzter mit VBA ermitteln
02.11.2009 12:05:02
werni
Hallo Joni
Sub VOR_MONATLETZT()
MsgBox DateSerial(Year(Date), Month(Date), 1 - 1)
End Sub

Gruss Werner
AW: Monatsletzter mit VBA ermitteln
02.11.2009 12:29:57
Joni
Hallo Werner,
danke, genau das brauche ich. Simpel und einfach. Man muss nur wissen wo suchen :-)
MLVM = (DateSerial(Year(Date), Month(Date), 1 - 1))
MLAM = (DateSerial(Year(Date), Month(Date) + 1, 1 - 1))
Gruß Joni
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Monatsletzter mit VBA ermitteln


Schritt-für-Schritt-Anleitung

Um den Monatsletzten mit VBA zu ermitteln, kannst Du den folgenden Code verwenden. Dieser Code nutzt die Funktion DateSerial, um den letzten Tag des aktuellen Monats und des Vormonats zu bestimmen:

Sub MonatsLetzte()
    Dim MonatsletzterVormonat As Date
    Dim MonatsletzterAktuell As Date

    MonatsletzterVormonat = DateSerial(Year(Date), Month(Date), 0)
    MonatsletzterAktuell = DateSerial(Year(Date), Month(Date) + 1, 0)

    MsgBox "Monatsletzter Vormonat: " & MonatsletzterVormonat & vbCrLf & _
           "Monatsletzter Aktuell: " & MonatsletzterAktuell
End Sub

In diesem Code wird 0 als Tag verwendet, um den letzten Tag des Monats zu ermitteln. Das ist eine elegante Methode, um den letzten Tag des Monats in Excel zu bestimmen, ohne die Anzahl der Tage manuell anzugeben.


Häufige Fehler und Lösungen

  • Fehler: Runtime Error 9: Subscript out of range

    • Lösung: Stelle sicher, dass Du die richtigen Parameter für DateSerial verwendest. Überprüfe, ob das Jahr und der Monat innerhalb der gültigen Werte liegen.
  • Fehler: Falsches Datum wird angezeigt.

    • Lösung: Überprüfe die Logik des verwendeten VBA-Codes, insbesondere die Verwendung von 0 für den letzten Tag.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch eine Excel-Formel verwenden, um den Monatsletzten zu ermitteln. Hier ist ein Beispiel:

=EOMONTH(HEUTE(), -1)  ' Letzter Tag des Vormonats
=EOMONTH(HEUTE(), 0)   ' Letzter Tag des aktuellen Monats

Diese Formeln nutzen die Funktion EOMONTH, um den letzten Tag eines Monats zu bestimmen. Dies ist eine praktische Alternative für alle, die nicht mit VBA arbeiten möchten.


Praktische Beispiele

  1. Letzter Tag des Monats für den aktuellen Monat:

    MsgBox "Letzter Tag des aktuellen Monats: " & DateSerial(Year(Date), Month(Date) + 1, 0)
  2. Letzter Tag des Vormonats:

    MsgBox "Letzter Tag des Vormonats: " & DateSerial(Year(Date), Month(Date), 0)

Diese Beispiele sind nützlich, wenn Du regelmäßig mit Monatsenden in Deinen Excel-Daten arbeiten musst.


Tipps für Profis

  • Nutze DateAdd, um auch mit komplexeren Datumsberechnungen zu arbeiten. Damit kannst Du flexibel auf Monatsanfänge oder -enden zugreifen.

  • Wenn Du oft mit dem ersten Tag des Monats arbeitest, kannst Du folgende Funktion verwenden:

    MsgBox DateSerial(Year(Date), Month(Date), 1)
  • Halte Deine VBA-Codes sauber und gut kommentiert, um die Lesbarkeit und Wartung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich den ersten Tag des Monats ermitteln?
Du kannst den ersten Tag des Monats mit folgender VBA-Funktion ermitteln:

MsgBox DateSerial(Year(Date), Month(Date), 1)

2. Was ist der Unterschied zwischen EOMONTH und DateSerial?
EOMONTH ist eine Excel-Formel, die den letzten Tag eines Monats zurückgibt, während DateSerial in VBA verwendet wird, um spezifische Datumswerte zu erzeugen.

3. Wie gehe ich mit Schaltjahren um?
Die Funktionen EOMONTH und DateSerial berücksichtigen automatisch Schaltjahre, sodass Du Dir darüber keine Sorgen machen musst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige