Liebe Profis,
ich bräuchte bei folgender Aufgabenstellung Eure Hilfe :
in Tabelle1 habe ich eine Zelle (z.B. A1) in die ich ein Datum eintrage.
In allen folgenden Tabellen zählt in der gleichen Zelle dieses Datum jeweils um ein Jahr weiter.
Der jeweilige Name der Tabellen ergibt sich aus der Jahreszahl die in der genannten Zelle steht ; mittels :
Dim var
var = [a1]
ActiveSheet.Name = var
Ändere ich in Tabelle1 nun das “Ursprungsdatum“, ändern sich die weiteren Tabellennamen nicht sofort danach, sondern erst, wenn ich in den anderen Tabellen jeweils einmal eine beliebige Eingabe gemacht habe.
Kann mir jemand eine Anweisung verraten, die Umgangssprachlich beschrieben ungefähr so lauten würde :
Wenn in Tabelle1, Zelle A1, eine Eingabe mit „Enter“ abgeschlossen wurde, aktualisiere alle folgenden Sheets ?
Vielen Dank im voraus.
Jorma
Hallo Jorma,
Wieso so kompliziert, wenn’s auch einfach geht???
Nehmen wir an, dein Datum steht in Tabelle1, Zelle A1. Dann schreibst du in Tabelle2 Zelle A1 folgendes rein:
=Tabelle1!A1+365
bzw. wenn du nach Schaltjahr auch noch suchen willst, müsste diese Formel helfen:
=Wenn(REST(Jahr(Tabelle1!A1+365)/4)=0;Tabelle1!A1+366;Tabelle1!A1+365)
Vielen Dank Alex, aber…
leider bezieht sich die Antwort nicht auf die Aufgabenstellung.
Vielleicht habe mich schlecht ausgedrückt. Es geht nicht darum, wie sich ein Datum in anderen Zellen fortschreiben lässt. Sondern wie das, was in Zelle A1 (in diesem Fall ein Datum, könnte aber auch etwas beliebig anderes sein) steht, automatisch zum Namen des Tabellenblattes (Register) wird.
Unten am Rand steht dann nicht mehr Tabelle1, Tabelle2, …, sondern 2004, 2005, oder „Schneewittchen“, je nachdem was gerade in Zelle A1 steht.
So weit bin ich aber schon.
Daher noch spezieller : die Namen der Register sollen sich sofort dann ändern, wenn in der Ursprungszelle die Eingabe abgeschlossen wurde. Zurzeit aktualisieren sie sich erst dann, wenn im jeweiligen Tabellenblatt eine beliebige Zelle aktiviert wurde.
Ich hoffe, es ist jetzt etwas klarer verständlich.
Zum Schluss noch ein kleiner Tipp für Dich :
statt der langen Formel
Wenn(REST(Jahr(Tabelle1!A1+365)/4)=0;Tabelle1!A1+366;Tabelle1!A1+365)
würde ich verwenden :
=EDATUM(Tabelle1!A1;12)
Wie Du schon schreibst :
Wieso so kompliziert, wenn’s auch einfach geht???
Sonnigen Sonntag
Jorma
In allen folgenden Tabellen zählt in der gleichen Zelle dieses
Datum jeweils um ein Jahr weiter.
Der jeweilige Name der Tabellen ergibt sich aus der Jahreszahl
die in der genannten Zelle steht ; mittels :
Wenn in Tabelle1, Zelle A1, eine Eingabe mit „Enter“
abgeschlossen wurde, aktualisiere alle folgenden Sheets ?
Hi Jorma,
Doppeklick im Editor auf Tabelle1.
Option Explicit
Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Address(0, 0) "A1" Then Exit Sub
Dim blatt As Worksheet, zähl As Integer
For Each blatt In ThisWorkbook.Worksheets
If blatt.Name ActiveSheet.Name Then
zähl = zähl + 1
blatt.Range("A1") = DateSerial(Year(Target) + zähl, Month(Target), Day(Target))
End If
Next blatt
End Sub
Gruß
Reinhard
Hallo Jorma!
Dein Problem müsste sich mit dem Befehl Workbook_Change lösen lassen…
Gruß Alex
Danke Reinhard und Alex
für Eure Hilfe
