Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 23. 10. 2010 21:17:24

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

V makru vzorec a výsledek do buňky

Ahojte, trochu jsem se tady koukal, ale nenašel jsem:
Jak do makra napsat vzorec, který něco spočítá a výsledek se objeví v buňce?Vzorec nechci mít v bunce-jen v makru.
Mělo by to asi vypadat tak nějak:

sub makro
list = ThisComponent.getSheets().getByName("List1")

vzorec = A1+A2  'List1.A1=5  List1.A2=2

list.getCellRangeByName("B1").setValue(vzorec)

end sub

no a samozřejmě v B1 se mi objeví 0 - vzorec nefunguje. Takže jak ten "vzorec" má správně vypadat? díky!


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#2 24. 10. 2010 06:01:55

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: V makru vzorec a výsledek do buňky

Povedzme makro pre sčítanie dvoch čísiel:

function sucet(Cislo1, Cislo2)
sucet=Cislo1+Cislo2
end function

A potom to volajte v bunke =sucet(A1;A2)

Offline

#3 24. 10. 2010 06:04:51

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: V makru vzorec a výsledek do buňky

Inak vo vašom príklade sčitujete dve nuly, čo je vo výsledku nula - premenné A1 a A2 nie sú nijako inicializované, preto sú nulové. Ak chcete sčítať dve bunky, tak ich musíte aj správne adresovať. Viac - pozrite si seriály o makrách na inet.sk, tam sa adresovaniu buniek v Calcu niektoré časti venovali.

Offline

#4 24. 10. 2010 10:38:28

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V makru vzorec a výsledek do buňky

diky,ok, tak ted si myslim ze jsem naadresoval proměnné a snažím se použít funkci MAX v makru:

sub makro2
list = ThisComponent.getSheets().getByName("List1")

A1 = list.getcellrangebyname("A1").value
A2 = list.getcellrangebyname("A2").value
vzorec = MAX(A1;A2)    'v bunce A1 je č."5" a v A2 je č. "2"

list.getCellRangeByName("B1").setValue(vzorec) 'vysledek by měl být č. 5 v bunce B1

end sub

při provedení makra se objeví chyba: "...nesouhlasí uvozovky" a je označený řádek "vzorec = max..."
nebo

sub makro2
list = ThisComponent.getSheets().getByName("List1")
oblast = list.getcellrangebyname("A1:A3").getrangeaddress

vzorec=MAX(oblast)    'v bunce A1 je č."5" a v A2 je č. "2"

list.getCellRangeByName("B1").setValue(vzorec)

end sub

při provedení tohoto makra se objeví chyba: "podprocedura nebo funkční procedura není definována"
no nevím co už může být špatně

Editoval dech (24. 10. 2010 10:40:05)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#5 24. 10. 2010 10:54:08

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: V makru vzorec a výsledek do buňky

Funkciu MAX máte definovanú? Pozor, funkcie z Calcu OO.o Basic nepozná!

Offline

#6 24. 10. 2010 12:21:30

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: V makru vzorec a výsledek do buňky

Máte dvě možnosti:

1) Vložit vzorec do buňky, necht ho spočítat, vzorec vymazat a nechat jen hodnotu

2) http://codesnippets.services.openoffice … tions.snip

Offline

#7 24. 10. 2010 22:22:23

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V makru vzorec a výsledek do buňky

aha,tak to je ten problém, že Basic nepozná ty funkce (to je mi ale divné). Takže proštudýruju ten odkaz od lp. diky


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

Zápatí