Am Monatsende Werte automatisch übertragen und festschreiben
Schritt-für-Schritt-Anleitung
Um am Monatsende in Excel automatisch einen Wert zu übertragen und ihn als unveränderlich festzuschreiben, kannst du VBA (Visual Basic for Applications) verwenden. Befolge diese Schritte:
-
Öffne die Excel-Arbeitsmappe: Stelle sicher, dass die Arbeitsmappe, in der du arbeiten möchtest, geöffnet ist.
-
Öffne den VBA-Editor:
- Drücke
ALT
+ F11
, um den VBA-Editor zu öffnen.
-
Füge den Code ein:
- Klicke im Projektfenster auf
DieseArbeitsmappe
.
- Füge den folgenden VBA-Code ein:
Private Sub Workbook_Open()
Dim Tb As Worksheet, MinDat As Date
Dim Datum As Date, Sp As Integer, RNG As Range
Datum = DateSerial(Year(Date), Month(Date) - 1, 1)
For Each Tb In ThisWorkbook.Sheets
Select Case Tb.Name
Case "DiesesBlattNicht", "Das auch nicht", "Tabelle 99"
'mach nichts
Case Else
Set RNG = Tb.Rows(3) ' Ändere dies auf die Zeile mit deinen Daten
Sp = WorksheetFunction.CountIf(RNG, CDbl(Datum))
If Sp > 0 Then
Sp = WorksheetFunction.Match(CDbl(Datum), RNG, 1)
Else
MsgBox "Monatsfehler auf Blatt: " & Tb.Name & vbLf & vbLf & "Bearbeitung gestoppt"
Exit Sub
End If
With Intersect(RNG, Tb.Columns(Sp)).Offset(1, 0)
If .HasFormula Then
.Value = .Value
End If
End With
End Select
Next
End Sub
-
Ändere die Zeile für die Daten: Ändere Tb.Rows(3)
in die Zeile, in der deine Daten stehen (z.B. Tb.Rows(16)
für Zeile 16).
-
Schließe den VBA-Editor: Klicke auf Datei
> Schließen und zurück zu Microsoft Excel
.
-
Speichere die Arbeitsmappe: Speichere die Datei als Excel-Arbeitsmappe mit Makros
(*.xlsm).
Häufige Fehler und Lösungen
-
Monatsfehler: Dieser Fehler tritt auf, wenn kein Datum für den Vormonat gefunden wird. Stelle sicher, dass das Datum in der angegebenen Zeile korrekt formatiert ist. Es muss im Datumsformat vorliegen.
-
Code stoppt bei bestimmten Blättern: Wenn du Blätter hast, die nicht betroffen sind, stelle sicher, dass die Namen korrekt im Code eingetragen sind ("DiesesBlattNicht", "Das auch nicht", "Tabelle 99"
).
-
Wert wird nicht festgeschrieben: Überprüfe, ob die Zelle in der gewünschten Zeile eine Formel enthält. Wenn nicht, funktioniert die Übertragung nicht.
Alternative Methoden
Falls du VBA nicht verwenden möchtest, kannst du auch die Funktion WENN
in Excel nutzen. Eine Formel wie =WENN(HEUTE()=EOMONTH(HEUTE(),0), B10, "")
kann helfen, den Wert in eine andere Zelle zu übertragen, aber sie wird den Wert nicht festschreiben.
Praktische Beispiele
Angenommen, du möchtest den Wert in Zelle B10 am Monatsende in A4 übertragen:
-
WENN-Dann-Formel:
=WENN(HEUTE()=EOMONTH(HEUTE(),0), B10, "")
Diese Formel gibt den Wert von B10 zurück, wenn das heutige Datum das Monatsende ist.
-
VBA für Übertragung: Nutze den oben genannten VBA-Code, um den Wert automatisch festzuschreiben.
Tipps für Profis
-
Automatisierung: Du kannst den VBA-Code so anpassen, dass er beim Öffnen der Arbeitsmappe ausgeführt wird, um die Verarbeitung zu automatisieren.
-
Datumsformat: Achte darauf, dass die Datumswerte im richtigen Format vorliegen, um Fehler zu vermeiden. Das Format sollte als Datum
eingestellt sein.
-
Testen: Teste den Code in einer Kopie deiner Arbeitsmappe, um sicherzustellen, dass er wie gewünscht funktioniert.
FAQ: Häufige Fragen
1. Wie ändere ich die zu übertragenden Zellen?
Ändere die Zeilen im VBA-Code, wo RNG
und Offset
festgelegt sind, um die gewünschten Zellen anzupassen.
2. Was ist, wenn mein Blatt keinen Vormonat hat?
Der VBA-Code enthält eine Fehlerbehandlung, die dies berücksichtigt. Wenn der erste Monat der aktuelle Monat ist, wird kein Fehler ausgegeben.
3. Kann ich den Code für mehrere Blätter verwenden?
Ja, der Code ist so konzipiert, dass er durch alle Blätter iteriert. Du musst nur sicherstellen, dass die nicht betroffenen Blätter korrekt im Code angegeben sind.