Eintragen des akt. Datums beim ERSTEN Beschriften v. Zellen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

nachteule
Beiträge: 8
Registriert: Do, 16.10.2003 21:07

Eintragen des akt. Datums beim ERSTEN Beschriften v. Zellen

Beitrag 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
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Beitrag 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
Zuletzt geändert von Karolus am So, 17.12.2006 02:42, insgesamt 1-mal geändert.
nachteule
Beiträge: 8
Registriert: Do, 16.10.2003 21:07

Beitrag 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... :oops:

Bin ganz gespannt ob es klappt, aber warte erst mal auf deine Instruktionen

Die Nachteule
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Beitrag 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
nachteule
Beiträge: 8
Registriert: Do, 16.10.2003 21:07

klappt, aber erst halb

Beitrag 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
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Beitrag 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
nachteule
Beiträge: 8
Registriert: Do, 16.10.2003 21:07

Hört sich gut an...

Beitrag 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
Antworten