Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Wert festschreiben

Betrifft: Wert festschreiben von: LaFu
Geschrieben am: 08.09.2020 16:13:00

Liebe Leser,

ich habe so eine Idee und weiß nicht, ob sie umsetzbar ist. Bei Ideen gern melden!

https://www.herber.de/bbs/user/140131.xlsx (Lediglich Beispielmappe)

In A1:B1 wird das Bearbeitungsjahr/Stand der Mappe festgelegt.

In A10:B13 wird eine Berechnung durchgeführt

In A5:F5 wird das Ergebnis der Berechnung (hier 12 für 2019) abgebildet

Idee: Wenn in B2 das Jahr geändert wird, dann würde die 12 aus der Berechnung automatisch in C6 (31.12.2020) rutschen. Dies soll aber nicht geschehen. Vielmehr soll die 12 in D6 festgeschrieben werden. Dies dient der Dokumentation vergangener Bearbeitungsjahre.

VG
LaFu

Betrifft: AW: erfasse Deine Datenwerte alle mit Datum ...
von: neopa C
Geschrieben am: 08.09.2020 16:36:03

Hallo LaFu,

... dann kann die Berechnung mit Formel sofort in Zeile 6 dynamisch geschehen und es ist jederzeit nachvollziehbar.

Das was Du willst, bedürfte VBA und hat den Nachteil, dass Deine Berechnungen nicht mehr nachvollziehbar sind.

Gruß Werner
.. , - ...

Betrifft: AW: erfasse Deine Datenwerte alle mit Datum ...
von: LaFu
Geschrieben am: 08.09.2020 16:53:50

Hallo Werner,

das funktioniert nicht, da die eigentliche Berechnung komplizierter ist als hier im Beispiel.

Der Nachteil ist nicht relevant und somit keiner.

Über VBA habe ich auch schon nachgedacht, aber keinen potenziellen Weg gesehen den ich da gehen kann. FYI: Ich will mir hier jetzt auch keinen Code erschnorren, sondern weiß lediglich nicht wo ich anfangen soll. Hab keine Idee.

VG

Betrifft: AW: Wert festschreiben
von: UweD
Geschrieben am: 08.09.2020 16:52:39

Hallo


- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Makro dort reinkopieren

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Const APPNAME = "Worksheet_Change"
    
    Dim SP As Integer, DatAlt As Date
    Dim Z As Integer
    
    Z = 5 'Zeile mit Historie
    
    If Not Intersect(Target, Range("B1")) Is Nothing Then
        With Application
            .EnableEvents = False
            .Undo
            DatAlt = Target
            .Undo
        End With
        
        If WorksheetFunction.CountIf(Rows(Z), DatAlt) > 0 Then ' ist Datum vorhanden
            SP = WorksheetFunction.Match(CDbl(DatAlt), Rows(Z), 0) ' in welcher Spalte
            Cells(Z + 1, SP) = Range("B13") 'Wert eine Zeile tiefer festschreiben
            
            'ggf Eingabe Löschen
            Range("B11:B12").ClearContents
            
        End If
        
    End If
    '*** Fehlerbehandlung
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD

Betrifft: AW: Wert festschreiben
von: LaFu
Geschrieben am: 08.09.2020 17:05:58

Mega Uwe!

Ich verstehe das Makro zwar nur zu 75% aber es funktioniert fast perfekt.

https://www.herber.de/bbs/user/140132.xlsm

Jedoch löscht es mir dann die Formeln aus den noch nicht festgeschriebenen B6:F6 ...

VG

Betrifft: AW: Wert festschreiben
von: UweD
Geschrieben am: 09.09.2020 08:37:07

Hallo

das versteh ich jetzt nicht.

- du wolltest doch dort bei Datumänderung den Wert fest reinschreiben

- da steht momentan per Formel eine 0, wenn das ausgewählte Datum NICHT übereinstimmt.
- Wenn du nun auf ein anderes Datum wechselst, wird der Wert beim vorherigen Datum festgeschrieben.
- Die übrigen Formeln bleiben doch erhalten.


LG UweD

Betrifft: AW: Wert festschreiben
von: LaFu
Geschrieben am: 09.09.2020 09:39:52

Moin Uwe,

hast recht. Habe ich gestern Abend wohl nicht mehr richtig umgesetzt.

Danke und nen schönen Tag

Betrifft: Prima. Danke für die Rückmeldung. owT
von: UweD
Geschrieben am: 09.09.2020 09:46:39