Problem beim Erstellen eines Makros
Moderator: Moderatoren
Problem beim Erstellen eines Makros
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
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
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().
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
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
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
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
hm naja is wahrscheinlich komplizierter als es sein müsste
aber das klappt so
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

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.

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.
mh also der müsste funktionieren musst natürlich nur noch anpassen
grüße
Paule
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
Paule