Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

excel vba alle monate zwischen zwei Datumswerten i

Betrifft: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 15.04.2015 16:14:20

Hallo Liebe Herber Gemeinde,
ich habe in einer Tabelle in zwei Zellen a1 und b1 je ein Datum stehen.
Jetzt möchte ich, dass acht Spalten weiter, in jeder neuen spalten der nächste Monat steht also in j1, k1, l1 usw.
Wie kann ich das in einem Makro darstellen?

Viele Danke

  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Ralf Risse
Geschrieben am: 15.04.2015 16:31:04

Hallo Jappe,

du musst die Anzahl der Monate ermitteln, das geht wohl über:

Dim thisDate As Date
Dim thisMonth As Integer
thisDate = #2/12/1969#
thisMonth = Month(thisDate)
' thisMonth now contains 2.
(Beispiel aus Microsoft)

dies machst du zweimal für die beiden Daten und ziehst diese voneinander ab und nimmst das in eine Variable

anschließest machst du eine Schleife:
for i = 1 to (deine Variable)
range("b1").Offset(0,i).value = 1. Monat + i -1
next i
hoffe es ist verständlich, bin bissl im stress grad :)

LG
Ralf


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Peter Feustel
Geschrieben am: 15.04.2015 17:09:22

Hallo Jappe,

warum bringst du nicht einfach ein Beispiel, wie es aussehen soll?
Aus deiner Beschreibung kann ich keine Basis für eine Aufgabenstellung entnehmen.

Gruß Peter


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 16.04.2015 09:13:22

Hallo Peter,
hier der Link zur Datei
https://www.herber.de/bbs/user/97099.xlsx
Gruß
Henning


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 16.04.2015 09:16:21

Hallo Peter,
das Datum in a1 und b1 kann sich immer ändern.
Gruß
Henning


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 16.04.2015 14:47:31

Hallo Ralf, Hallo Peter,
ich habe mal ein Beispiel hochgeladen,
vielleich könnt Ihr noch mal drüberschauen.
Ralf, dein Vorschlg hat nicht so richtig funktioniert.

Viele Danke
Henning


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Peter Feustel
Geschrieben am: 16.04.2015 14:57:59

Hallo Henning

als VBA-Lösung z. B. so:

Option Explicit

Public Sub Monat_dazwischen()

Dim iSpalte     As Integer
Dim dDatum_Von  As Date
Dim dDatum_Bis  As Date


   With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen
      If IsDate(.Range("A1").Value) And IsDate(.Range("B1").Value) Then
         If .Range("B1").Value >= .Range("A1").Value Then
            iSpalte = 6
            dDatum_Von = .Range("A1").Value
            dDatum_Bis = .Range("B1").Value
            Do
               With .Cells(3, iSpalte)
                  .NumberFormat = "MMM. YY"
                  .Value = dDatum_Von
               End With
              If dDatum_Von <= dDatum_Bis Then
                 dDatum_Von = DateSerial(Year(dDatum_Von), Month(dDatum_Von) + 1, Day( _
dDatum_Von))
                 iSpalte = iSpalte + 1
               Else
                 Exit Do
              End If
            Loop
         Else
            MsgBox "Das Datum in Zelle ""B1"" darf nicht kleiner sein" & vbLf & _
               "als das Datum in Zelle ""A1"" - ABBRUCH", _
               48, "   Hinweis für " & Application.UserName
         End If
       Else
         MsgBox "In Zelle ""A1"" oder in Zelle ""B1"", oder aber in beiden" & vbLf & _
            "ist kein Datum eingetragen worden - ABBRUCH", _
            48, "   Hinweis für " & Application.UserName
      End If
   End With

End Sub

Gruß Peter


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 16.04.2015 15:14:10

Hallo Peter,
viele Dank, das funktioniert schon fast perfekt, aber es wird ein Monat zu viel eingetragen.
Wenn ich als höchste Datum 1.3.15 eintrage, wird bis April eingetragen.
Kann ma das noch ändern?
Danke
Henning


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Jappe
Geschrieben am: 16.04.2015 15:32:23

Hallo Peter,
alles Gut, ich habe durch eine kleine Änderung in der Zeile
If dDatum_Von "kleiner"= dDatum_Bis Then
einfach nur If dDatum_Von "kleiner" dDatum_Bis Then
gesetzt, dann funktioniert es.
Vielen vielen Dank für die super Hilfe

Grüße
Henning


  

Betrifft: AW: excel vba alle monate zwischen zwei Datumswerten i von: Peter Feustel
Geschrieben am: 16.04.2015 17:26:16

Hallo Henning,

hier noch eine Version mit Dokumentation

Gruß Peter

Option Explicit

Public Sub Monat_dazwischen()

Dim iSpalte      As Integer ' die zu befüllende Ausgabe-Spalte
Dim dDatum_Strt  As Date    ' das Start-Datum
Dim dDatum_Ende  As Date    ' das  Ende-Datum


   With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen
'         prüfen der Eingabe-Werte (Start- und Ende-Datum)
      If IsDate(.Range("A1").Value) And IsDate(.Range("B1").Value) Then
         If .Range("B1").Value >= .Range("A1").Value Then
            .Range("F3:FY3").ClearContents ' den Ergebnis-Bereich großzügig leeren
            iSpalte = 6 ' die Start-Spalte festlegen
            dDatum_Strt = .Range("A1").Value ' das Start-Datum speichern
            dDatum_Ende = .Range("B1").Value ' das  Ende-Datum speichern
            Do
               With .Cells(3, iSpalte)
                  .NumberFormat = "MMM. YY" ' die Ausgabe-Zelle formatieren
                  .Value = dDatum_Strt       ' des neue Datum eintragen
               End With
'                 den Monat um 1 erhöhen
               dDatum_Strt = DateSerial(Year(dDatum_Strt), Month(dDatum_Strt) + 1, Day( _
dDatum_Strt))
               iSpalte = iSpalte + 1
'                solange in der Schleife bleiben, bis der 1. des Start-Monats > als der 1. des  _
Ende-Monats ist
            Loop Until DateSerial(Year(dDatum_Strt), Month(dDatum_Strt), 1) > DateSerial(Year( _
dDatum_Ende), Month(dDatum_Ende), 1)
         Else
            MsgBox "Das Datum in Zelle ""B1"" darf nicht kleiner sein" & vbLf & _
               "als das Datum in Zelle ""A1"" - ABBRUCH", _
               48, "   Hinweis für " & Application.UserName
         End If
       Else
         MsgBox "In Zelle ""A1"" oder in Zelle ""B1"", oder aber in beiden" & vbLf & _
            "Zellen ist kein Datum eingetragen worden - ABBRUCH", _
            48, "   Hinweis für " & Application.UserName
      End If
   End With

End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "excel vba alle monate zwischen zwei Datumswerten i"