folgendes Problem möchte ich lösen, vieleicht habt ihr mir Tips wie
das ganze zu lösen wäre.
In einem Sheet soll in Zelle F8 Zahlen eingegeben werden dieses bewirkt, dass in Zelle W8, Y8, AA8 ein „N“ angezeigt wird, wenn in
diesen Zellen das „N“ steht soll in den Zellen AS8, AU8, AW8 das aktuelle Datum eingetragen werden. Wenn in Zelle X8, Y8 oder AB8 ein „X“ eingeben wird soll das Datum in AT8, AV8 AX8 eingetragen werden. Soweit funktioniert alles. Das Problem ist, dass wenn ich die Datei schließe und wieder öffne aktualisiert sich das Datum. Da ich die Tage zwischen dem Eintrag „N“ und „X“ berechnen muss ist dies nicht optimal.
Habe es schon versucht mit VBA Auto_Close und kopieren des Datum’s, aber das funktioniert auch nicht.
Hallo,
soweit ich durch die ganzen Verwirrungen durchblicke hast du alles dynamisch über WENN-Abfragen in den Zellen gelöst. Natürlich aktualisiert sich das Datum ständig, schlißlich hast du ihm gesagt er soll „JETZT“ in die Zelle schreiben. Wenn du das nicht änderst steht auch immer das Datum von „JETZT“ in der Zelle.
Vermutlich versuchst du sowas wie eine Datenbank in Excel nachzubasteln. Da Excel eigentlich für andere Anwendungen gedacht ist wirst du um massive Workarounds nicht rum kommen. Weniger Arbeit ist Access.
Zu Excel:
Wenn sich die Daten (einmal eingetragen) nie mehr ändern sollen, dann musst du mit VBA arbeiten. Du könntest beim Schließen alle Zellen abfragen in denen ein Datum stehen könnte. Wenn dort ein Datum steht, dann Dauerhaft eintragen (Kopieren --> Werte einfügen). Allerdings ist dann die Formel die vorher drin stand hoffnungslos verloren. Natürlich kann man auch hier über Zwischenlösungen über Hilfsfelder nachdenken in die dann die Daten reingeschrieben werden. Für alle Lösungen gilt aber: Viel VBA!
Hallo,
danke für die Infos und Anregungen.
Also mit den untenstehenden VBA-Zeilen komme ich nicht weiter. Es wird das Datum kopiert, sobald ich die Datei schließe und wieder öffne überschreibt sich das Datum.
-Sub Auto_Close()
-Range(„BK8“).Copy
-Range(„AS8“).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
-Operation:=xlNone, SkipBlanks:=False, Transpose:=False
-’
-'Die Arbeitsmappe schließen und die Änderungen speichern
If ThisWorkbook.Saved = False Then
ThisWorkbook.Save
-End If
-End Sub
vieleicht kann mir noch jemand weiterhelfen…
Danke schon mal für Eure Mühe
wird, wenn in
diesen Zellen das „N“ steht soll in den Zellen AS8, AU8, AW8
das aktuelle Datum eingetragen werden. Wenn in Zelle X8, Y8
oder AB8 ein „X“ eingeben wird soll das Datum in AT8, AV8 AX8
eingetragen werden.
Hallo Nukem21,
in das Modul des Blattes:
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim T As Range
Set Target = Intersect(Target, Range("F8, W8, Y8, AA8, X8, Z8, AB8"))
If Target Is Nothing Then Exit Sub
For Each T In Target
Select Case T.Address(0, 0)
Case "F8"
If IsNumeric(T.Value) Then
Range("W8, Y8, AA8").Value = "N"
End If
Case "W8", "Y8", "AA8"
If T.Value = "N" Then
If Range("AS8") = "" Then
Range("AS8, AU8, AW8").Value = Date
End If
End If
Case "X8", "Z8", "AB8"
If T.Value = "X" Then
If Range("AT8") = "" Then
Range("AT8, AV8, AX8").Value = Date
End If
End If
End Select
Next T
End Sub
danke für deine Antwort, das hilft mir schon weiter. Nur noch eine Frage wie kann ich den Befehl mit Format die Uhrzeit zum Datum hinzufügen. Den Befehl —Format = „m/d/yyyy h:mm“— ist mir bekannt nur wie ist dieser in deinem Code einzufügen.
danke für deine Antwort, das hilft mir schon weiter. Nur noch
eine Frage wie kann ich den Befehl mit Format die Uhrzeit zum
Datum hinzufügen. Den Befehl —Format = „m/d/yyyy h:mm“—
ist mir bekannt nur wie ist dieser in deinem Code einzufügen.
nein es müssen keine Schrägstriche sein, das war nur so eine Idee. Das Format wäre egal, es sollte nur Datum und Uhrzeit eingetragen werden um feststellen zu können wann die entsprechenden („N“ oder „X“) Einträge in den jeweiligen Zellen gemacht worden sind.
nein es müssen keine Schrägstriche sein, das war nur so eine
Idee. Das Format wäre egal, es sollte nur Datum und Uhrzeit
eingetragen werden um feststellen zu können wann die
entsprechenden („N“ oder „X“) Einträge in den jeweiligen
Zellen gemacht worden sind.
Hallo Nukem21,
um im deutschen Standard-Excel Schrägstriche zu erreichen müßte man anders vorghen, deshalb meine Frage.
ich habe diesen Code etwas angepasst, aber leider funktioniert er nicht so wie ich es brauche. Da auch die differenz der Tage von Eingabe bei „N“ und „X“ berechnet werden soll.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim T As Range
Set Target = Intersect(Target, Range("F8, W8, Y8, AA8, X8, Z8,AB8 "))
If Target Is Nothing Then Exit Sub
For Each T In Target
Select Case T.Address(0, 0)
Case „F8“
If IsNumeric(T.Value) Then
Range(„W8, Y8, AA8“).Value = „N“
Else
Range(„F8“).Value = „“
Range(„W8, Y8, AA8“).Value = „“
Range(„AS8, AU8, AW8“).Value = „“
End If
Case „W8“, „Y8“, „AA8“
If T.Value = „N“ Then
If Range(„AS8“) = „“ Then
Range(„AS8, AU8, AW8“).Value = Date
End If
End If
Case „X8“, „Z8“, „AB8“
If T.Value = „X“ Then
If Range(„AT8“) = „“ Then
Range(„AT8, AV8, AX8“).Value = Date
End If
End If
End Select
Next T
End Sub
nun ist es so wenn in Zelle F8 eine Zahl eingetragen wird funktioniert es wie es soll, wenn kein Eitrag ist bzw. die Zelle leer ist sollte auch kein „N“ dadurch natürlich auch kein Datum in AS8, AU8 und AW8 angezeigt werden. Nun ist es so wenn ich den Eitrag lösche passiert nichts die Einträge bleiben, wenn ich aber ein „-“ Eingebe werden die Einträge aus den betroffenen Zellen gelöscht.
Nun sollte bei Eingabe von „X“ in Zelle X8 das Datum nur in Zelle AT8 angezeigt werden genau so sollten sich die Zellen Z8 zu AV8 und AB 8 zu AX8 verhalten bei Eingabe und wenn kein Eintrag dann auch kein Datum.