Seite 1 von 1
Eintragen des akt. Datums beim ERSTEN Beschriften v. Zellen
Verfasst: Fr, 15.12.2006 20:23
von nachteule
Hallo,
ich will dass OOcalc das aktuelle Systemdatum in eine Zelle schreibt. Und zwar nur dann wenn eine bestimmte Zelle zum erstenmal beschrieben wird.
Beim späteren Öffnen des Dokumentes soll das Datum sich nicht ändern.
Im Endeffekt ist es also das Datum in dem das Arbeitsblatt zum erstenmal bearbeitet wird.
Hab nach Lösungen gegooglet, aber nur in einem Excell-Forum eine Lösung über ein Makro gefunden.
Denk aber dass das nicht so einfach in Calc zu übernehmen ist.
Vielleicht gibt es ja auch eine einfachere Lösung?
cu - die Nachteule
Verfasst: Fr, 15.12.2006 23:32
von Karolus
Hallo Nachteule
Meinen letzten Vorschlag hab ich gelöscht, folgendes sollte funktionieren :
Code: Alles auswählen
Sub initialdatum
'Schreibt bei leerer Zelle A1 das aktuelle Datum in die Zelle
oCalc = thisComponent
oSheet = oCalc.sheets(0) '1.Tabellenblatt
ocella = osheet.getcellrangebyName("A1") 'Zelle A1
if ocella.string = "" then
ocella.string = date
end if
End Sub
Passe die Zelladresse bei Bedarf an, kopiere den Code in Modul 1 in der Standard Bibliothek deines Dokuments und verknüpfe es mit :
->Extras->Anpassen 'Ereignisse'-'Geändert-Status wurde geändert'
Gruß Karo
Verfasst: Sa, 16.12.2006 22:45
von nachteule
Hallo Karolus,
Karolus hat geschrieben:Passe die Zelladresse bei Bedarf an, kopiere den Code in Modul 1 in der Standard Bibliothek deines Dokuments und verknüpfe es mit :
->Extras->Anpassen 'Ereignisse'-'Geändert-Status wurde geändert'
habe noch nie was mit Codes gemacht.
Ich hab nicht rausgefunden wie ich deinen Text in die Bibliothek reinbekomme; hab noch nicht mal die Bibliothek gefunden...
Bin ganz gespannt ob es klappt, aber warte erst mal auf deine Instruktionen
Die Nachteule
Verfasst: So, 17.12.2006 02:41
von Karolus
Hallo Nachteule
Ok,
1.Kopier obigen Code in die Zwischenablage,und wechsle in dein Tabellendokument
2.Geh ins Menü : ->Extras ->Makros ->Makros verwalten ->Openoffice-basic
3. Im folgenden Dialog suchst du im linken Fenster nach deinem Dokument(ganz nach unten scrollen) klappst den Eintrag auf, selektierst 'Standard' und klickst auf die Schaltfläche 'Neu', den folgenden Dialog mit der Abfrage des Modulnamens bestätigst du mit 'ok'.
4. Du 'landest' jetzt im Basic Editor der zunächst nur die Einträge :
Sub Main
End sub
enthält, diese beiden Zeilen kannst du gleich löschen, und stattdessen den Code aus der Zwischenablage hier einfügen.
5. Falls du das Aktuelle Datum nicht in A1 des ersten Tabellenblatts haben möchtest musst du den Code entsprechend ändern.
mit dem grünen Pfeilsymbol oben in der Symbolleiste kannst du jetzt schon mal testen ob es so läuft wie du wünscht.(Kontrolle im Dokument)
Falls alles ok ist, schliest du das Basic-fenster jetzt.
Zuletzt musst dieses Makro noch dem Ereigniss 'Geändert-Status wurde geändert' zuweisen :
->Extras ->Anpassen 'Ereignisse' -den Eintrag selektieren, und über die Schaltfläche 'Zuweisen' das Makro -'<dein dokument>-Standard-Module1-Initialdatum' suchen und bestätigen.
Gruß Karo
klappt, aber erst halb
Verfasst: So, 17.12.2006 19:41
von nachteule
Hallo Karo,
mein erstes BASIC-Macro ist gebaut und läuft irgendwie.
Dankeschön schon mal bis hierher.
Ein Problem noch:Das Makro hat beim Probelauf (grüner Pflei) das aktuelle Datum in B3 reingeschrieben. (Gut) Aber wenn ich das Datum aus B3 rauslösche und irgendeine Zahl in B3 reinschreibe wird zwar die Zahl durch ein Datum erstetzt, aber nicht das aktuelle sondern ein aus der Zahl berechnetes.
Nicht so gut....
Ich brauche das Ganze so:
Zu der Zeit wenn in F5 vom 2. Blatt eine Zahl reingeschrieben wird, soll in B3/2. Blatt das aktuelle Datum geschrieben werden.
Zu der Zeit wenn in F5 vom 3. Blatt eine Zahl reingeschrieben wird, soll in B3/3. Blatt das aktuelle Datum geschrieben werden.
usw. Das Ganze für 6 Tabellenseiten, also vom 2. bis zum 7. Blatt.
Geht das?
Huhu die Nachteule
Verfasst: Mo, 18.12.2006 10:36
von Karolus
Hallo Nachteule
Ein Problem noch:Das Makro hat beim Probelauf (grüner Pflei) das aktuelle Datum in B3 reingeschrieben. (Gut) Aber wenn ich das Datum aus B3 rauslösche und irgendeine Zahl in B3 reinschreibe wird zwar die Zahl durch ein Datum erstetzt, aber nicht das aktuelle sondern ein aus der Zahl berechnetes.
Man könnte das über einen Tabellenschutz per Makro lösen, dazu müsste aber in allen Eingabezellen (zb. F5)eine neue Zellvorlage mit aufgehobenen Zellschutz verwendet werden. ?
Zu der Zeit wenn in F5 vom 2. Blatt eine Zahl reingeschrieben wird, soll in B3/2. Blatt das aktuelle Datum geschrieben werden.
Zu der Zeit wenn in F5 vom 3. Blatt eine Zahl reingeschrieben wird, soll in B3/3. Blatt das aktuelle Datum geschrieben werden.
usw. Das Ganze für 6 Tabellenseiten, also vom 2. bis zum 7. Blatt.
Dann erweitern wir die 'if' Abfrage und stecken das ganze in eine 'for' --'next' -Schleife :
Code: Alles auswählen
Sub initialdatum2
'Schreibt bei leerer Zelle B3 und bei Zahleneintrag in F5 das aktuelle Datum in die Zelle B3
oCalc = thisComponent
for n = 1 to 6 '2.bis 7. Tabellenblatt
oSheet = oCalc.sheets(n)
datumszelle = osheet.getcellrangebyName("B3") 'Zelle B3
inputzelle = osheet.getcellrangebyName("F5") 'Zelle F5
if datumszelle.string = "" and inputzelle.value <> 0 then 'bei 0 in F5 ->kein Datum
datumszelle.string = date
end if
next n
End Sub
Gruß Karo
Hört sich gut an...
Verfasst: Di, 19.12.2006 10:18
von nachteule
Hab in den nächsten Tagen aber keine Zeit, um es auszuprobieren.
Ich meld mich wenn ich dann noch Fragen habe.
Dankeschön schon mal,
und schöne Weihnachtsgrüße aus der Pfalz
Die Nachteule