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

Forumthread: Automatische Werte befüllen wenn bestimmtes Datum

Automatische Werte befüllen wenn bestimmtes Datum
03.09.2008 13:43:00
Heiderer
Hallo!
Ich habe folgendes Excel-Sheet:
In Spalte A soll mittels VBA ein Datum eingefügt werden, zb. 01.09.2008. In Spalte B soll ein Betrag zb. € 70,00 eingetragen werden. Bezüglich der Spalte B gibt es kein Problem. Es geht nur um die Spalte A.
Ich will nämlich, dass Excel automatisch jedes Monat ab 01. des Monats mir diesen Betrag reinschreibt, aber nur dann, wenn das Datum erreicht ist. Es sollte so aussehen:
A1= 01.09.2008
A2= 01.10.2008
A3= 01.11.2008 usw...
Leider habe ich das nicht ganz geschafft, kann es leider nur für eine einmalige Prüfung machen, die wie folgt aussieht:

Private Sub Workbook_Open()
Const Datum = #9/1/2008# 'MM/TT/JJJJ
If Date >= Datum Then
Worksheets("Tabelle1").Range("A2") = "01.09.2008"
End If
End Sub


Nachdem ich nun nicht vorhabe, in VBA diesen Code für jedes Datum selbst zu erstellen, ergeht nun meine Frage, ob das anders und einfacher auch geht?
Ich hoffe, dass ihr versteht was ich will und hoffe, dass es irgendwer schafft.

Anzeige

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Werte befüllen wenn bestimmtes Datum
03.09.2008 14:38:00
Chris
Servus,
probier's mal so:
Geht aber nur beim Öffnen des Workbooks.

Private Sub Workbook_Open()
Dim dat As Date
dat = DateSerial(Year(Date), Month(Date), 1) ' = Erster des aktuellen Monats
If Date >= dat Then
Dim rSuche  As Range, rFinde As Range
Set rFinde = Sheets("Tabelle1").Range("A:A")
Set rSuche = rFinde.Find(what:=dat, Lookat:=xlWhole, LookIn:=xlValues)
If rSuche Is Nothing Then
If Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0).Row > 2 Then
Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0) = dat
Else
Sheets("Tabelle1").Range("A1") = dat
End If
End If
End If
End Sub


Gruß
Chris

Anzeige
AW: Automatische Werte befüllen wenn bestimmtes Datum
03.09.2008 16:35:00
Thomas
danke sehr für die rasche lösung, habs auch gleich probiert, hat am anfang auch toll ausgeschaut, als ich deinen code eingefügt habe, hat er mir aufomatisch den 01.09.2008 in a1 geschrieben
nur als ich das datum auf 01.10. umgestellt habe und das excel-sheet nochmals neu geöffnet habe, hat er mir den wert vom 01.09.2008 auf 01.10.2008 überschrieben, was ich nicht wollte, ich will ja, dass er mir dann in die nächste zeile (sprich a2) den 01.10.2008 schreibt, der wert von a1 mit 01.09.2008 soll stehen bleiben, verstehst du?
ich hoffe, dass du weißt was ich meine und das du es lösen kannst, mit bestem dank jetzt schon
Anzeige
AW: Automatische Werte befüllen wenn bestimmtes Datum
03.09.2008 16:45:57
Thomas
nochmals kurz zur erklärung, was ich eigentlich will:
ich schreibe zB. in a1 den monats ersten hinein, wäre also der 01.09.2008
nun will ich, wenn das aktuelle datum der 01.10. ist, dass er mir nun automatisch in a2 das datum 01.10. hinschreibt, auch wenn ich zb. die datei erst am 03.10. öffne, würde ich die datei überhaupt erst am 03.11. öffnen, soll er mir in a2 01.10. und in a3 01.11. schreiben
ich hoffe, dass du verstehst was ich meine und bedanke mich jetzt schon ganz herzlichst bei dir um dein bemühen
Anzeige
AW: Sorry, kleiner Denkfehler
03.09.2008 17:52:40
Chris
Servus,
so:

Private Sub Workbook_Open()
Dim dat As Date
dat = DateSerial(Year(Date), Month(Date), 1) ' = Erster des aktuellen Monats
If Date >= dat Then
Dim rSuche  As Range, rFinde As Range
Set rFinde = Sheets("Tabelle1").Range("A:A")
Set rSuche = rFinde.Find(what:=dat, Lookat:=xlWhole, LookIn:=xlValues)
If rSuche Is Nothing Then
If Sheets("Tabelle1").Range("A1")  "" Then
Sheets("Tabelle1").Range("A65536").End(xlUp).Offset(1, 0) = dat
Else
Sheets("Tabelle1").Range("A1") = dat
End If
End If
End If
End Sub


Gruß
Chris

Anzeige
AW: Sorry, kleiner Denkfehler
03.09.2008 18:16:00
Heiderer
hallo, danke für die rasche behebung meines problemes, jetzt funktionierts super, nur hätte ich noch ein kleines problem, nehmen wir an, ich vergesse einmal im monat diese datei zu öffnen und der letzte wert ist: 01.09.2008. stelle ich das systemdatum nun auf november ein, schreibt er mir in die nächste zeile: 01.11.2008, aber was ist nun mit dem 01.10.2008? kannst du das noch so einbauen, dass wenn ich einmal im monat die datei nicht öffne, dann excel das fehlende monat automatisch ergänzt? das wäre echt super von dir, wenn du das schaffen würdest
ich bedanke mich jetzt schon wieder ganz herzlichst bei dir
Anzeige
AW: Sorry, kleiner Denkfehler
03.09.2008 18:43:00
Chris
Servus,
dann ganz anders:

Private Sub Workbook_Open()
Dim lngletzte As Long, Monat As Long, Jahr As Long, i As Long, k As Long
Dim MonatsDifferenz As Long, JahresDifferenz As Long
With Sheets("Tabelle1")
lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.  _
_
Count)
Select Case .Range("A1")
Case Is = "":
.Range("A1") = DateSerial(Year(Date), Month(Date), 1)
Exit Sub
Case Else
Monat = Month(.Cells(lngletzte, 1))
Jahr = Year(.Cells(lngletzte, 1))
End Select
End With
JahresDifferenz = Year(Date) - Jahr
Select Case JahresDifferenz
Case 0:
MonatsDifferenz = Month(Date) - Monat
Select Case MonatsDifferenz
Case 0:
Exit Sub
Case 1:
With Sheets("Tabelle1")
.Range("A65536").End(xlUp).Offset(1, 0) = DateSerial(Year(Date),  _
Month(Date), 1)
End With
Case Else
For i = Monat + 1 To Month(Date)
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date),   _
_
i, 1)
End With
Next i
End Select
Case Else
For k = 0 To JahresDifferenz
If k = 0 Then
For i = Monat + 1 To 12
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date) -  _
JahresDifferenz + k, i, 1)
End With
Next i
Else
For i = 1 To 12
If Year(Date) - JahresDifferenz + k = Year(Date) And i = Month(Date) + 1 Then   _
_
Exit Sub
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date) -  _
JahresDifferenz + k, i, 1)
End With
Next i
End If
Next k
End Select
End Sub


Hier ist es egal, wie lange du nichts mehr eingetragen hast. das Makro füllt die Differenz vom letzten datum bis zum jetzigen auf, steht nichts in der Tabelle wird das aktuelle Datum (natürlich der Erste des Monats) eingetragen.
Viel Spaß
Gruß
Chris

Anzeige
AW: Sorry, kleiner Denkfehler
03.09.2008 19:13:00
Heiderer
danke sehr, hört sich toll an, nur kommen beim kompilieren einige fehlermeldungen, ich hab dir die zeilen, welche vba rot makiert, unten angeführt:
lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
_
Count)
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date), _
_
i, 1)
If Year(Date) - JahresDifferenz + k = Year(Date) And i = Month(Date) + 1 Then _
_
oder mache ich was falsch?
Anzeige
AW: Sorry, kleiner Denkfehler
04.09.2008 08:15:43
Chris
Servus,
das liegt am Seitenumbruch, wenn du den entfernst , dann verschwindet auch der rote Text.
Zur Sicherheit:
https://www.herber.de/bbs/user/55179.xls
In der Datei ist der Code ohne Zeilenumbrüche aufgeführt. Das mit den Zeilenumbrüchen passiert, wenn der Text zu lang für die Forumsansicht ist, oder einb Fehler bei der Vorschau hier im Forum vorlag.
Gruß
Chris
Anzeige
AW: Sorry, kleiner Denkfehler
04.09.2008 08:20:18
Heiderer
hej super danke, jetzt funktioniert die datei so, wie ich es mir vorgestellt habe, du bist echt toll, danke dir für die rasche hilfe
AW: Sorry, kleiner Denkfehler
04.09.2008 08:36:33
Heiderer
tut mir leid, dass ich jetzt nochmals stören muss, was muss ich machen, wenn in a1 eine überschrift (zb. datum) steht und das richtige datum erst mit a2 beginnt? hätte es in vba von a1 auf a2 geändert, kommt aber leider eine fehlermeldung, ich hoffe, dass du mir noch einmal helfen kannst (trau mich ja kaum noch dich fragen)
Anzeige
AW: Sorry, kleiner Denkfehler
04.09.2008 08:40:08
Heiderer
sorry, problem schon gelöst, hab einfach einen falschen tabellen-namen gehabt, alles ok, danke nochmals
AW: Sorry, kleiner Denkfehler
04.09.2008 14:45:00
Heiderer
hallo, eine kleine frage hätte ich noch, was müsste ich in vba umstellen, wenn will, dass es nicht immer der erste des monats ist sondern vielleicht der 5.? danke dir jetzt schon wiedermal
Anzeige
AW: na ganz einfach...
04.09.2008 15:53:00
Chris
... so:
DateSerial(Year(Date), Month(Date), 1) + 4
Gruß
Chris
AW: na ganz einfach...
04.09.2008 16:04:00
Heiderer
hab ich probiert, nur schreibt er mir, wenn ich als anfangsdatum den 05.08. und ich im system den 01.08 eingestellt habe, trotzdem den 05.09. hin, was er ja noch nicht soll, da ja noch nicht der 05.09. ist, hm, funtkioniert leider nicht und mache ich was falsch?
Anzeige
AW: na ganz einfach...
04.09.2008 16:34:04
Heiderer
also hier nochmal der ganze code, den ich verwende, leider klappt es noch immer nicht:

Private Sub Workbook_Open()
Dim lngletzte As Long, Monat As Long, Jahr As Long, i As Long, k As Long
Dim MonatsDifferenz As Long, JahresDifferenz As Long
With Sheets("Tabelle1")
lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
Select Case .Range("A1")
Case Is = "":
.Range("A1") = DateSerial(Year(Date), Month(Date), 1) + 4
Exit Sub
Case Else
Monat = Month(.Cells(lngletzte, 1))
Jahr = Year(.Cells(lngletzte, 1))
End Select
End With
JahresDifferenz = Year(Date) - Jahr
Select Case JahresDifferenz
Case 0:
MonatsDifferenz = Month(Date) - Monat
Select Case MonatsDifferenz
Case 0:
Exit Sub
Case 1:
With Sheets("Tabelle1")
.Range("A65536").End(xlUp).Offset(1, 0) = DateSerial(Year(Date),  _
Month(Date), 1) + 4
End With
Case Else
For i = Monat + 1 To Month(Date)
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date),  _
i, 1) + 4
End With
Next i
End Select
Case Else
For k = 0 To JahresDifferenz
If k = 0 Then
For i = Monat + 1 To 12
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date) -  _
JahresDifferenz + k, i, 1) + 4
End With
Next i
Else
For i = 1 To 12
If Year(Date) - JahresDifferenz + k = Year(Date) And i = Month(Date) + 1 Then  _
Exit Sub
With Sheets("Tabelle1")
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date) -  _
JahresDifferenz + k, i, 1) + 4
End With
Next i
End If
Next k
End Select
End Sub


Anzeige
AW: na ganz einfach...
04.09.2008 16:59:55
Chris
Hier bitteschön auf den 5. angepasst:

Sub Test()
Dim lngletzte As Long, Monat As Long, Jahr As Long, i As Long, k As Long
Dim MonatsDifferenz As Long, JahresDifferenz As Long
With Sheets("Tabelle1")
lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
Select Case .Range("A1")
Case Is = "":
If Day(Date) >= 5 Then
.Range("A1") = DateSerial(Year(Date), Month(Date), 1) + 4
Exit Sub
Else
Exit Sub
End If
Case Else
Monat = Month(.Cells(lngletzte, 1))
Jahr = Year(.Cells(lngletzte, 1))
End Select
End With
JahresDifferenz = Year(Date) - Jahr
Select Case JahresDifferenz
Case 0:
MonatsDifferenz = Month(Date) - Monat
Select Case MonatsDifferenz
Case 0:
Exit Sub
Case 1:
With Sheets("Tabelle1")
If Day(Date) >= 5 Then
.Range("A65536").End(xlUp).Offset(1, 0) = DateSerial(Year(Date),  _
Month(Date), 1) + 4
Else
Exit Sub
End If
End With
Case Else
For i = Monat + 1 To Month(Date)
If i = Month(Date) And Day(Date) 


Da kommen dann noch die ein oder andere If-Abfrage dazu, weil ja der Tag auch noch geprüft werden muss.
Gruß
Chris

Anzeige
AW: na ganz einfach...
04.09.2008 17:28:32
Heiderer
super danke, jetzt bin ich ganz zufrieden *g*
herzlichsten dank nochmals für deine raschen lösungen und bemühungen
AW: na ganz einfach...
04.09.2008 18:20:49
Heiderer
hallo nochmal, ich weiß, dass ich dich sicher schon nerve, aber ich hätte probiert, dass mir das datum nicht in die zellen A geschrieben werden schon in B, habe das auch in vba umgebessert, überall wo a1 gestanden ist auf b1 bzw. A65536 auf B65536, leider funktioniert das nicht
ich hoffe, dass du mir noch einmal helfen kannst *liebschau*
Anzeige
Warum probierst du das nicht?
04.09.2008 23:26:29
Beate
Hallo Thomas,
warum fragst du in anderen Foren und reagierst dort nicht auf Vorschläge?:
http://www.online-excel.de/fom/fo_read.php?f=1&bzh=0&h=30995&ao=1#a123x
Wenn es immer der Monatsfünfte sein soll und ab B1 abwärts bis zum Fünften des aktuellen Monats, dann so:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        If Sheets("Tabelle1").Range("B1").Value = "" Then
            Sheets("Tabelle1").Range("B1").Value = DateSerial(Year(Now), Month(Now), 5)
        Else
            Sheets("Tabelle1").Range("B1").DataSeries Rowcol:=xlColumns, _
                Type:=xlChronological, _
                Date:=xlMonth, _
                Step:=1, _
                Stop:=Date, _
                Trend:=False
        End If
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

Gruß,
Beate
Anzeige
Verbesserung
04.09.2008 23:55:58
Beate
Hallo Thomas,
hiermit würdest du obendrauf sicherstellen, dass in B1 als Tag immer der Fünfte drin steht, egal in welchem Monat / Jahr der Eintrag in B1 gemacht wurde. Das muss nämlich sichergestellt sein, damit die Reihe nach Wunsch aufgefüllt wird:
Option Explicit

Private Sub Workbook_Open()
    Sheets("Tabelle1").Select 'Tabellenname anpassen
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        Range("B2:B65536").ClearContents
        If Range("B1").Value = "" Then
            Range("B1").Value = DateSerial(Year(Now), Month(Now), 5)
        Else
            Range("B1").Value = DateSerial(Year(Range("B1")), Month(Range("B1")), 5)
            Range("B1").DataSeries Rowcol:=xlColumns, _
                Type:=xlChronological, _
                Date:=xlMonth, _
                Step:=1, _
                Stop:=Date, _
                Trend:=False
        End If
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

Gruß,
Beate
Anzeige
AW: Verbesserung
05.09.2008 07:52:00
Heiderer
hej super danke, genauso hab ich mir das vorgestellt, du bist spitze danke nochmals
AW: Verbesserung
06.09.2008 07:46:00
Heiderer
hallo nochmal, wollte mich nochmals bei mir bedanken, hat alles super funktioniert
nun hätte ich noch eine Frage, könnten man noch was bei dem code einbauen: ich will, dass dieser code nur 5 mal (sprich 5 monate) ausgeführt wird, danach nicht
beispiel: start 05.09.2008, 05.10.2008, 05.11.2008, 05.12.2008, 05.01.2009, 05.02.2009, danach soll er stoppen
wenn du das noch hinbekommen könntest, wäre das super
Anzeige
AW: na ganz einfach...
05.09.2008 09:03:16
Chris
Servus,
du hast ja jetzt auch eine andere Lösung, aber mal fürs grundsätzliche Verständnis:
.Cells(65536, 1).End(xlUp).Offset(1, 0) = DateSerial(Year(Date) - JahresDifferenz + k, i, 1) + 4
entspricht:
.Range("A65535").End(xlUp).Offset(1, 0) = DateSerial(Year(Date) - JahresDifferenz + k, i, 1) + 4
wobei die die 1 in der Klammer bei .Cells(65536, 1) für die Spalte steht, also A, bei 2 dann B,...
außerdem:
lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
hier hast du auch die 1 bei der Bestimmung der letzten beschriebenen Zeile, wie gehabt, 2 = B, 3 = C,...
das muss man dann entsprechend auch ändern.
Gruß
Chris
Anzeige
AW: na ganz einfach...
05.09.2008 10:01:29
Heiderer
ok, super danke für die info
AW: na ganz einfach...
04.09.2008 16:36:00
Heiderer
bei dem code, den ich dir gerade geschrieben habe, schreibt er mir jetzt zwar brav den 05.09. hin, aber dies dürfte er ja noch gar nicht, weil ja heute erst der 04.09. ist, ich hoffe, dass du verstehst, was ich will, danke dir jetzt schon
AW: Automatische Werte befüllen wenn bestimmtes Datum
03.09.2008 15:08:00
Beate
Hallo Thomas,
das wäre deine Tabelle:
 AB
101.05.200870,00 €
201.06.200870,00 €
301.07.200870,00 €
401.08.200870,00 €
501.09.2008 
601.10.2008 
701.11.2008 
801.12.2008 

Dann geht es so:
Private Sub Workbook_Open()
    If Cells(Rows.Count, "B").End(xlUp).Offset(1, -1).Value > DateSerial(Year(Now), Month(Now), 1) Then Exit Sub
    Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Value = 70
End Sub


Gruß,
Beate
Anzeige
Falls ich die Frage falsch verstanden habe...
03.09.2008 15:17:00
Beate
bewirkt dieser Code, dass in Spalte A der aktuelle Monatserste eingetragen wird:
Private Sub Workbook_Open()
    If Sheets("Tabelle1").Cells(Rows.Count, "A").End(xlUp).Offset(0, 0).Value = DateSerial(Year(Now), Month(Now), 1) Then Exit Sub
    Sheets("Tabelle1").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = DateSerial(Year(Now), Month(Cells(Rows.Count, "A").End(xlUp).Offset(0, 0)) + 1, 1)
End Sub


Gruß,
Beate
Anzeige
AW: Falls ich die Frage falsch verstanden habe...
03.09.2008 16:45:00
Thomas
hallo, danke für die rasche antwort, aber ich glaube, dass du mein anliegen vielleicht falsch verstanden hast
ich schreibe zB. in a1 den monats ersten hinein, wäre also der 01.09.2008
nun will ich, wenn das aktuelle datum der 01.10. ist, dass er mir nun automatisch in a2 das datum 01.10. hinschreibt, auch wenn ich zb. die datei erst am 03.10. öffne, würde ich die datei überhaupt erst am 03.11. öffnen, soll er mir in a2 01.10. und in a3 01.11. schreiben
ich hoffe, dass du verstehst was ich meine und bedanke mich jetzt schon ganz herzlichst bei dir um dein bemühen
Anzeige
AW: Falls ich die Frage falsch verstanden habe...
03.09.2008 17:03:28
Thomas
hallo nochmal, ich habs nun so einiger maßen hinbekommen, ich muss eben die datei zweimal öffnen, damit er mir auch zwei monate aktualisiert, wenn du das noch schaffen könntest, wäre das super, ansonsten kann man nix machen
nur ist mir jetzt aufgefallen, dass es über das jahr darüber geht, schreibt er mir nicht 2009 schon gleich 2010 hin, obwohl ich bei windows 2009 eingestellt habe, was hats da nun?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatische Werte befüllen bei bestimmtem Datum


Schritt-für-Schritt-Anleitung

Um in Excel automatisch das Datum für den ersten Tag jedes Monats einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code fügt das Datum in die nächste freie Zeile in Spalte A ein, wenn das Dokument geöffnet wird:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul.
  3. Kopiere den folgenden Code in das Modul:
Private Sub Workbook_Open()
    Dim lngletzte As Long
    Dim i As Long
    With Sheets("Tabelle1")
        lngletzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), 0, .Cells(Rows.Count, 1).End(xlUp).Row)
        If lngletzte = 0 Then
            .Cells(1, 1).Value = DateSerial(Year(Date), Month(Date), 1)
        Else
            For i = 1 To Month(Date)
                If .Cells(lngletzte, 1).Value < DateSerial(Year(Date), i, 1) Then
                    lngletzte = lngletzte + 1
                    .Cells(lngletzte, 1).Value = DateSerial(Year(Date), i, 1)
                End If
            Next i
        End If
    End With
End Sub
  1. Schließe den VBA-Editor und speichere das Excel-Dokument als Excel-Arbeitsmappe mit Makros (.xlsm).
  2. Schließe und öffne die Datei erneut, um die automatische Befüllung zu testen.

Häufige Fehler und Lösungen

  • Problem: Der Code funktioniert nicht beim ersten Öffnen.

    • Lösung: Stelle sicher, dass das Makro aktiviert ist und die Datei im richtigen Format (.xlsm) gespeichert wurde.
  • Problem: Das Datum wird überschrieben anstatt in die nächste Zeile eingefügt.

    • Lösung: Überprüfe den Code, um sicherzustellen, dass die letzte Zeile korrekt ermittelt wird und keine doppelten Einträge vorhanden sind.

Alternative Methoden

Wenn du die Funktionalität ohne VBA umsetzen möchtest, kannst du auch die Funktion WENN in Kombination mit HEUTE verwenden. Diese Methode ist jedoch weniger dynamisch:

  1. In Zelle A1 schreibst du das Startdatum, z.B. 01.09.2008.
  2. In Zelle A2 gibst du die folgende Formel ein:
    =WENN(MONAT(A1) < MONAT(HEUTE()), A1 + 30, "")
  3. Ziehe die Formel nach unten, um die monatliche Befüllung zu simulieren.

Praktische Beispiele

Im Folgenden findest du Beispiele für die Nutzung des automatischen Datumsstempels:

  • Automatisches Ausfüllen von Daten: Wenn du das Datum für den Monatsersten automatisch befüllen möchtest und das aktuelle Datum der 01.10. ist, wird die Zelle A2 automatisch 01.10.2008 erhalten, sobald das Dokument erneut geöffnet wird.

  • Zusätzliche Beträge: In der Spalte B kannst du die Beträge für jeden Monat festlegen, die dann automatisch in die Tabelle eingetragen werden können.


Tipps für Profis

  • Regelmäßige Überprüfung: Stelle sicher, dass dein Excel-Dokument regelmäßig geöffnet wird, um die automatische Befüllung zu gewährleisten. Andernfalls könnten Monate übersprungen werden.

  • Anpassung an unterschiedliche Daten: Wenn du das Datum nicht immer auf den ersten Tag des Monats setzen willst, kannst du die DateSerial-Funktion anpassen, um einen anderen Tag (z.B. den 5.) zu verwenden:

    .Cells(lngletzte, 1).Value = DateSerial(Year(Date), Month(Date), 5)

FAQ: Häufige Fragen

1. Wie kann ich den automatischen Datumsstempel auf einen anderen Tag einstellen? Du kannst den Tag in der DateSerial-Funktion anpassen, z.B.:

.Range("A1") = DateSerial(Year(Date), Month(Date), 5)

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der VBA-Code sollte in Excel-Versionen ab 2007 funktionieren. Stelle sicher, dass die Makros aktiviert sind.

3. Kann ich die automatische Befüllung auch ohne VBA umsetzen? Ja, du kannst die Funktion WENN und HEUTE verwenden, um eine einfache monatliche Berechnung durchzuführen, aber die Flexibilität ist eingeschränkt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige