Zahlen auslesen und in Datumsfeld behalten

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Zahlen auslesen und in Datumsfeld behalten
von: Georg
Geschrieben am: 17.08.2015 13:00:36

Hallo,
ich habe eine Exceltabelle erstellt mit Togglebuttons bzw. Umschaltflächen. Dabei gibt es 6 Buttons die bei Klick darauf hochzählen. Diese Zahlen sollen dann in eine seperate Tabelle eingefügt werden, dabei hat jeder Tag des Monats eine Zeile.
Nun möchte ich, dass er die Zahlen von den Buttons automatisch in den jeweiligen Tag einträgt, und wenn er keine Daten hat (weil Tabelle an dem Tag nicht benutzt)eine 0 einträgt. Also als Beispiel: Ich habe am 01.08.2015 5 x auf den 1. Button, 7x auf den 2. Button usw. geklickt, nun soll er die Zahlen in der Tabelle beim 01.08. eintragen.
Ich habe es mit einer WENN-Formel in Verbindung mit einem =HEUTE()Datumsfeld probiert, aber wenn das Datumsfeld sich ändern, setzt er die Zahlen einfach in die Zeile des aktuellen Datums ein und behält sie nicht in der alten Zeile.
Wie kann ich also die einmal eingetragenen Zahlen fixieren, sodass Sie nach Ablauf des Tages nicht mehr verändert werden können? Die Tabelle wird nicht täglich geöffnet bzw. auch an unterschiedlichen Wochentagen geöffnet, wird aber über den Zurücksetzen-Button immer zurück gesetzt und kann dann wieder neu benutzt werden.
Im Anhang findet Ihr die Tabelle.
https://www.herber.de/bbs/user/99389.xlsm
Vielen Dank schon mal für die hoffentlich hilfreichen Antworten. :-p :-)

Bild

Betrifft: AW: Zahlen auslesen und in Datumsfeld behalten
von: Matthias
Geschrieben am: 17.08.2015 13:28:45
Hallo Georg,
dein gewünschtes "fixieren" lässt sich per Hand realisieren, indem du in die Formel der Zelle klickst und "F9" drückst. Dann wird die Formel durch den errechneten Wert der Formel ersetzt.
Ansonsten gäbe es die Möglichkeit per Makro mit dem Schließen der Mappe für die heutige Zeile das Drücken von "F9" automatisch ausführen zu lassen.
Weiterhin könnte ein Makro beim Klick auf die Buttons den Zellenwert hochzählen, dh. deine Formel wäre im Makro hinterlegt und nicht mehr in der Zelle selbst.

Bild

Betrifft: AW: Zahlen auslesen und in Datumsfeld behalten
von: Matthias
Geschrieben am: 17.08.2015 13:37:27
Ach, entschuldige bitte, da hab ich dir glatt den Nachteil von Variante 2 unterschlagen: Nachdem du die Datei das erste Mal am Tag geschlossen hast, wäre deine Formel natürlich futsch. Solltest du am selben Tag nochmal klicken müssen, wird das nicht mehr mitgezählt.
Man müsste daher eher beim Öffnen des Dokumentes die Klicks von gestern in das jeweilige Feld eintragen lassen, das ganze gestaltet sich etwas komplizierter. Variante 1 und 3 sind daher wesentlich einfacher.

Bild

Betrifft: AW: Zahlen auslesen und in Datumsfeld behalten
von: Matthias
Geschrieben am: 17.08.2015 15:35:15
Und nochmal ich...,
Hier meine Variante wie ich das gelöst hätte:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
' zuletzt geöffnetes Datum eintragen
P_zulGeoeffnet.Value = Date
End Sub
Public P_zulGeoeffnet As Range
'
Private Sub Workbook_Open()
Dim Bereich As Range
Dim Monat As String
Dim TBWerte As Worksheet
Application.ScreenUpdating = False
' -- Bezüge --
Set P_zulGeoeffnet = Tabelle9.Range("C12")  ' Datum des letzten Öffnens
Set TBWerte = Tabelle1                      ' TB mit den gezählten Klicks
' ------------
If P_zulGeoeffnet.Value = Date Then
    'MsgBox "Heute bereits geöffnet"
    ' keine Aktionen nötig
Else: 'MsgBox "Heute noch nicht geöffnet"
    ' Zeile vom letzten Öffnen festsetzen
    
    ' Auswahl Tabellenblatt Monat
    x = Month(P_zulGeoeffnet.Value)
    Select Case x
        Case 1: Monat = "Januar"
        Case 2: Monat = "Februar"
        Case 3: Monat = "März"
        Case 4: Monat = "April"
        Case 5: Monat = "Mai"
        Case 6: Monat = "Juni"
        Case 7: Monat = "Juli"
        Case 8: Monat = "August"
        Case 9: Monat = "September"
        Case 10: Monat = "Oktober"
        Case 11: Monat = "November"
        Case 12: Monat = "Dezember"
    End Select
    For Each Worksheet In ActiveWorkbook.Sheets
        If Worksheet.Name Like (Monat & "*") Then
            Worksheet.Select
        End If
    Next Worksheet
    ' Suche Datum vom letzten Öffnen
    Set Bereich = Range("C:C").Find(What:=P_zulGeoeffnet.Value, LookIn:=xlFormulas, _
                LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
                
    ' Übertragen der Werte
    For x = 4 To 7 ' Spalte D-G
            Cells(Bereich.Row, x).Value = TBWerte.Cells(4, x + 2).Value
    Next x
    For x = 8 To 10 ' Spalte H-J
            Cells(Bereich.Row, x).Value = TBWerte.Cells(13, x - 1).Value
    Next x
    ' Zähler nullen
    TBWerte.Select
    Range("F4") = 0
    Range("G4") = 0
    Range("H4") = 0
    Range("G13") = 0
    Range("H13") = 0
    'MsgBox "Werte festgesetzt."
End If
End Sub
mfg Matthias

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zahlen auslesen und in Datumsfeld behalten"