Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1420to1424
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

excel vba alle monate zwischen zwei Datumswerten i

excel vba alle monate zwischen zwei Datumswerten i
15.04.2015 16:14:20
Jappe

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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel vba alle monate zwischen zwei Datumswerten i
15.04.2015 16:31:04
Ralf Risse
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

Anzeige
AW: excel vba alle monate zwischen zwei Datumswerten i
15.04.2015 17:09:22
Peter Feustel
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

AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 09:16:21
Jappe
Hallo Peter,
das Datum in a1 und b1 kann sich immer ändern.
Gruß
Henning

AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 14:47:31
Jappe
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

Anzeige
AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 14:57:59
Peter Feustel
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

Anzeige
AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 15:14:10
Jappe
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

AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 15:32:23
Jappe
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

AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 17:26:16
Peter Feustel
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

Anzeige

352 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige