AW: VBA Code für Datumsberechnung / weitere Verwendung
20.12.2012 10:46:12
guentherh
Hallo Jens,
wenn ich das richtig sehe, gibt es ein Eingabeformular, und das Füllen einer Gesamtzeile.
ich kann noch nicht erkennen, wie die weiteren Daten generiert und plaziert werden sollen.
Folgende zwei Unterschiede zur ursprünglichen Aufgabenstellung meine ich erkannt zu haben:
- Zeitraum wird nicht mehr durch Datum und Laufzeit, sondern durch Start- und Enddatum eingegeben(wesentlich)
- Ausgabe der Zeitscheibe erfolgt nicht als Text sondern in zwei Zellen als Datum (unwesentlich - sogar einfacher)
Erklärungen zum Einbau des Codes:
Sub GH_MonateFüllen()
'/*** EingabeFelder
Dim FStart As Range
Dim FDauer As Range
Dim FAktDatum As Range
Dim FFoerderung As Range
' EingabeFelder ***/
'/*** Variablen für Eingabewerte
Dim WStart As Date
Dim WDauer As Double
Dim WFoerderung As Double
' Variablen für Eingabewerte ***/
Dim Teilmonat
Dim dattext
Dim i
'/*** Initialisieren EingabeFelder, kann wegfallen
Set FStart = Range("B1")
Set FDauer = Range("E1")
Set FFoerderung = Range("H1")
' Initialisieren EingabeFelder ***/
'/*** aktueller Ausgabeplatz , erforderlich, ermittelst Du über "erste freie Zeile"
Set FAktDatum = Range("B4") '***/
' *** Belegung der Eingabewerte, hier durch Deine Eingabewerte ersetzen
' durch Enddatumseingabe würde sich die Berechnung der Zeitpunkte verändern
' insbesondere Tagesgenauigkeit erfordert komplexere Vorgehensweise
' Wenn Du aus Start- und Enddatum die Dauer in ganzen Monaten auf WDauer legst,
' kann die Berechnung unverändert übernommen werden.
WStart = FStart
WDauer = FDauer
WFoerderung = FFoerderung
'/*** Berechnung
If Day(WStart) > 1 Then ' Unterscheidung ob am 1. des Monats gestartet wird
Teilmonat = True
End If
If WDauer >= 1 Then ' Laufzeiten müssen mind 1 Monat sein!!
dattext = Format(WStart, "dd.mm.yyyy") & " - " & Format(DateSerial(Year(WStart), Month( _
WStart) + 1, 1) - 1, "dd.mm.yyyy")
'bei der Ermittlung des Ende-Tages wird vom 1. des Folgemonats einen Tag zurückgegangen
FAktDatum = dattext
Set FAktDatum = FAktDatum.Offset(1, 0)
i = 1
While i
beste Güße,
Günther