Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Am Monatsende Werte übertragen

Forumthread: Am Monatsende Werte übertragen

Am Monatsende Werte übertragen
24.08.2022 11:33:24
Manuel
Hallo,
ich habe seit geraumer Zeit ein Problem, dass ich nicht gelöst bekomme.
Ich möchte am Ende eines Monats einen Wert in eine bestimmte Zelle übertragen und ihn dort als unveränderlich fixieren.
Anhand meiner Beispieltabelle:
Ist der Juni 2022 beendet, soll der aktuelle Wert aus B10 in A4 kopiert werden. Dort soll er als unveränderlich fixiert werden, da der Wert in B10 sich nach dem jeweiligen Monatsende verändern kann. Ist nun der Juli 2022 beendet, soll der dann aktuelle Wert aus B10 nach B4 kopiert werden usw.
Ich freue mich auf Anregungen um mein Problem zu lösen. Vielen Dank!
https://www.herber.de/bbs/user/154785.xlsx
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 12:03:59
UweD
Hallo
ich hab das Prüfen mal auf das aktivieren des Tabellenblattes gelegt.
Annahme: In B4 steht eine Formel mit Bezug auf B10
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Code rechts einfügen

Private Sub Worksheet_Activate()
Dim Datum As Date, Sp As Integer, RNG As Range
Set RNG = Rows(3)
'Erster der Vormonats
Datum = DateSerial(Year(Date), Month(Date) - 1, 1)
'Datum vorhanden
Sp = WorksheetFunction.CountIf(RNG, CDbl(Datum))
'in welcher Spalte
If Sp > 0 Then
Sp = WorksheetFunction.Match(CDbl(Datum), RNG, 1)
Else
MsgBox "Monatsfehler"
Exit Sub
End If
'Hat Zelle eine Formel?
With Intersect(RNG, Columns(Sp)).Offset(1, 0) 'Schnittmenge aus Zeile und Spalte
'Wenn Formel, dann als Wert festschreiben
If .HasFormula Then
.Value = .Value
End If
End With
End Sub
LG UweD
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 13:00:12
Manuel
Uwe, vielen Dank! Ich habe zwei Rückfragen:
Erfasse ich es richtig, dass ich in die Monatszeilen eine Wenn-Dann- Formel einsetze und der VBA-Code dann schaut ob eine Formel drin ist?
Lässt sich der Code auch so schreiben, dass die Durchführung bei jedem Öffnen der Arbeitsmappe erfolgt? Ich habe nämlich ca. 50 Blätter bei denen das jeden Monat erfolgen muss.
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 13:40:09
UweD
Hallo nochmal
zu 1) genau. Im Vormonat wird geschaut
zu 2) dann muss der Code in den Codebeich von "DieseArbeitsmappe"
hier der hier leicht angepasst. Alle Blätter (mit Ausnahme der dort Eingetragenen) werden so überprüft

Private Sub Workbook_Open()
Dim Tb As Worksheet
Dim Datum As Date, Sp As Integer, RNG As Range
'Erster der Vormonats
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)
'Datum vorhanden
Sp = WorksheetFunction.CountIf(RNG, CDbl(Datum))
'in welcher Spalte
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
'Hat Zelle eine Formel?
With Intersect(RNG, Tb.Columns(Sp)).Offset(1, 0) 'Schnittmenge aus Zeile und Spalte
'Wenn Formel, dann als Wert festschreiben
If .HasFormula Then
.Value = .Value
End If
End With
End Select
Next
End Sub
LG UweD
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 13:42:36
Manuel
Danke! Muss ich irgendwo die betreffenden Zellen ändern? Also wenn es nicht B4 und B10 betrifft?
AW: Am Monatsende Werte übertragen
24.08.2022 13:49:50
Manuel
Ich habe grad den Code mal eingefügt. Er stoppt bei Blatt 1 mit Monatsfehler. Wahrscheinlich weil dort kein Datum auftaucht. Es ist ein nicht betroffenes Blatt. Lässt sich das lösen?
AW: Am Monatsende Werte übertragen
24.08.2022 13:59:45
UweD
Die NICHT betroffenen Blätter kannst du doch hier eintragen

        Case "DiesesBlattNicht", "Das auch nicht", "Tabelle 99"
'mach nichts

Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 14:04:32
UweD
Hallo nochmal
hier ist die Zeile 3 als Suchzeile für das Datum festgelegt.

Set RNG = Tb.Rows(3)
Die Datum-Spalte wird ermittelt
und durch

.Offset(1, 0)
wird die ZELLE darunter auf Formelinhalt geprüft.
B10 ist nicht betroffen, da die ja nur Bestandteil in deinen Formeln in Zeile 3 ist
LG UweD
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 14:09:43
Manuel
OK. In der betreffenden Datei ist das erste Datum in Zeile 16, Spalte 3. Es gibt keinen Vormonat. Ich bekomme dann einen Monatsfehler. Wo könnte der Fehler liegen? Muss das Datum in C16 ein spezielles Format haben?
AW: Am Monatsende Werte übertragen
24.08.2022 14:51:01
UweD
Hallo
Habe auf Zeile 16 geändert
und prüfe, nun ob der erste Monat der Aktuelle ist. Dann KEIN Fehler
Formatiert sollte Zeile 16 sein als Datum

Private Sub Workbook_Open()
Dim Tb As Worksheet, MinDat As Date
Dim Datum As Date, Sp As Integer, RNG As Range
'Erster der Vormonats
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(16)
'Datum vorhanden
Sp = WorksheetFunction.CountIf(RNG, CDbl(Datum))
'in welcher Spalte
If Sp > 0 Then
Sp = WorksheetFunction.Match(CDbl(Datum), RNG, 1)
Else
MinDat = WorksheetFunction.Min(RNG)
If MinDat > Datum Then
'Es gibt keinen Vormonat aber den aktuellen Monat
'Also keinen Fehler ausgeben
'mache nichts
GoTo Weiter
Else
MsgBox "Monatsfehler auf Blatt: " & Tb.Name & vbLf & vbLf & "Bearbeitung gestoppt"
Exit Sub
End If
End If
'Hat Zelle eine Formel?
With Intersect(RNG, Tb.Columns(Sp)).Offset(1, 0) 'Schnittmenge aus Zeile und Spalte
'Wenn Formel, dann als Wert festschreiben
If .HasFormula Then
.Value = .Value
End If
End With
End Select
Weiter:
Next
End Sub
LG UweD
Anzeige
AW: Am Monatsende Werte übertragen
24.08.2022 16:02:01
Manuel
Es funktioniert. Ich danke dir ganz herzlich!
Gruß
Manuel
Prima. Danke für die Rückmeldung. owT
24.08.2022 16:16:00
UweD
;
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne die Excel-Arbeitsmappe: Stelle sicher, dass die Arbeitsmappe, in der du arbeiten möchtest, geöffnet ist.

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. 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
  4. Ä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).

  5. Schließe den VBA-Editor: Klicke auf Datei > Schließen und zurück zu Microsoft Excel.

  6. 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:

  1. 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.

  2. 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.

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