Problem beim Erstellen eines Makros

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

cyberwolf
Beiträge: 2
Registriert: Do, 27.10.2005 12:18

Problem beim Erstellen eines Makros

Beitrag von cyberwolf »

Hallo zusammen,

ich versuche derzeit ein Makro in eine Tabelle einzufügen. Ich weiß zwar wie der Weg auszusehen hat, aber leider bin ich mit der Syntax von OO.o nicht sehr vertraut.

Ich schreibe derzeit eine Bestelliste für meinen Arbeitgeber. Sie soll den Status der Bestellung und ein Bestelldatum enthalten.

Bisher tragen wir das alles von Hand ein und die Faulheit bringt uns dazu das Bestelldatum wegzulassen. Sehr ärgerlich wenn man wissen will wann eine Ware bestellt wurde.

Nun möchte ich, dass das aktuelle Datum sofort in eine Zelle eingetragen wird, sobald in einer anderen Zelle der Eintrag "Bestellt" auftaucht.

Wie bringe ich der Tabelle das bei? Ich konnte nicht herausfinden wie man a) eine Zelle prüft und b) aus dem Makro heraus in eine Zelle schreibt.

Für sachdienliche Hinweise wäre ich sehr dankbar.

Gruß,
cyberwolf
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

moin

Hab dir da ein kleines makro gebastelt, musst du nur anpassen.
in eine freie Zelle (egal wo, kannst auch ausblenden lassen) schreibst du die funktion =Heute().

Code: Alles auswählen

sub datum
osheet =thiscomponent.sheets.getbyname("Tabelle1") 'welches tabellenblatt?
ozelle =osheet.getcellrangebyname("c1")  'zelle mit =heute()
stext = ozelle.string
ozelle = osheet.getcellrangebyname("b1") 'zu prüfende zelle
if ozelle.string = "" then  'bedingung
osheet.getcellrangebyname("").string = (stext) else
osheet.getcellrangebyname("a1").string = (stext) 'wenn bedingung erfüllt wird c1 ausgegeben (also datum)
end if 

end sub
wahrscheinlich musst du ne schleife einbauen da du es ja nicht nur für 1 zelle brauchst.

Das makro muss jedesmal aktiviert werden sonst funtz es nicht.In deinem fall würde ich es so machen:

Extras ->anpassen->ereignisse
und bei der option dokument speiher das marko zuweisen.

hoffe ich konnte helfen

grüße paule
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

ah mir ist da noch was eingefallen, das obrige makro nimmt keine rücksicht auf schon vorhandene Daten... es müsste also ungefähr so aussehen

Code: Alles auswählen

sub datum
osheet =thiscomponent.sheets.getbyname("Tabelle1") 'welches tabellenblatt?
ozelle =osheet.getcellrangebyname("c1")  'zelle mit =heute()
stext = ozelle.string
if osheet.getcellrangebyname("a1").string = false then
osheet.getcellrangebyname("a1").string = false else
call calldat
end if
end sub


sub calldat
osheet =thiscomponent.sheets.getbyname("Tabelle1") 'welches tabellenblatt?
ozelle =osheet.getcellrangebyname("c1")  'zelle mit =heute()
stext = ozelle.string
if osheet.getcellrangebyname("b1").string = true then
osheet.getcellrangebyname("a1").string = (stext)
end if 
end sub
hm naja is wahrscheinlich komplizierter als es sein müsste

:roll: aber das klappt so
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

ah scheiße

vergiß das oben , das schrott... :oops: :oops:
cyberwolf
Beiträge: 2
Registriert: Do, 27.10.2005 12:18

Beitrag von cyberwolf »

So, erstmal danke für die wirklich schnelle Hilfe. :)

Dein Skript hat so bei mir leider nicht funktioniert, aber ich habe wenigstens die Syntax kapiert. :)

Das Skript sieht nun so aus:

[code]
sub datum
osheet = thiscomponent.sheets.getbyname("2006") 'Welches Tabellenblatt?
ozelle = osheet.getcellrangebyname("a2") 'Zelle die geprüft werden soll.

if ozelle.string = "Bestellt" then 'Wenn A2 den String "Bestellt" enthält, dann
osheet.getcellrangebyname("f2").string = Date 'Schreibe das aktuelle Datum in C2
else 'Ansonsten
osheet.getcellrangebyname("f2").string = "Irgendwas" 'Hier passiert noch irgendwas
end if

end sub
[/code]

So weit, so gut.

Jetzt muss ich aber auch gleich nochmal um Hilfe bitten. :?

a) Wie kriege ich die Schleife hin?
b) Wie muss ich das Skript anpassen damit er nicht bloß a2 und f2, sondern jede Zelle in diesen Spalten beim durchlaufen der Schleife prüft?

Wie immer bin ich für sachdienliche Hinweise sehr dankbar.
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

mh also der müsste funktionieren musst natürlich nur noch anpassen

Code: Alles auswählen

sub datum
osheet =thiscomponent.sheets.getbyname("Tabelle1") 
ozelle =osheet.getcellrangebyname("c1")  
stext = ozelle.string
for i = 1 to 5 'Zeilen angeben (0 = 1, 1 = 2...) hier also zeile 2 bis 6
ozelle = osheet.getcellbyposition(1,i) 'zu prufende position angeben (variable i miteinbaun)
if ozelle.string = "" then  
nothing else
osheet.getcellbyposition(0,i).string = (stext) 
end if
next	'next gehört zur for funktion die schleife wird also 4 mal wiederholt 
end sub 
grüße

Paule
busyfolks
**
Beiträge: 44
Registriert: Mo, 10.10.2005 12:26
Wohnort: Berlin

Beitrag von busyfolks »

ich würde das mit einer verschachtelten Funktion machen.
also mit einer wenn-Funktion zum Beispiel. So wäre mein Gedankenansatz. Ob es geht weiß ich nicht
Paule
****
Beiträge: 113
Registriert: Do, 22.09.2005 16:26
Wohnort: Schleswig

Beitrag von Paule »

hi busyfolks

wenn du das mit einer Wenn funktion hast ändern sich ja alle Daten auf das Aktuelle Datum da die funktion das Datum ja automatisch kriegen soll also aus =heute(). diese funktion zeigt jeden Tag das Aktuelle Datum an, und die Datumseingaben sollten ja erhalten bleiben.

gruß

Paule
Antworten