OpenOffice.org Calc pod drobnohľadom (11) - Ukážka makra

Menu

PORTÁL

O Linuxe

Eshop

Anketa

Kedy ste naposledy menili distribúciu?

(87 ~ 29%)
(14 ~ 5%)
(62 ~ 21%)
(20 ~ 7%)
(75 ~ 25%)
(41 ~ 14%)
Spolu: 299
Komentárov: 18 Zobraziť ankety

PODPORUJEME

SKOSI.org

LinuxEXPO

ODPORÚČAME

PODPORTE NÁS

Ak sa vám táto stránka páči, môžete nás podporiť tak, že si na vaše stránky umiestnite tento banner.
Banner LinuxOS.sk

Štýl

Vyhľadávanie

Databáza znalostí

Prihlásenie




Registrácia
Neprihlásený

Správy

Archív správ
02.09 12:51 |  dodoedo
S potešujúcou správou tento týždeň prišiel Jared Smith, Fedora Project Leader, ktorý oznámil linuxovej komunite, že služba Ksplice, umožňujúca najnovšie pravidelné update linuxového jadra (o Ksplice Uptrack sme písali aj na linuxos.sk) je už dostupná ako free pre linuxové distribúcie Fedora a Ubuntu desktop.
Komentárov: 1
02.09 10:12 |  dodoedo
Polročná bezpečnostná správa "IBM X-Force® 2010 Mid-Year Trend and Risk Report" svojím hodnotením spoločnosti Google ako spoločnosti, ktorá v prvom polroku 2010 má stále v aplikáciach neošetrených celkovo 33% kritických bugov, vyvolala zdesenie Google bezpečnostných expertov a konzultácie s relevantným tímom z IBM. Tento uznal chybu v zlej klasifikácii bugov, spôsobenú zmätenou terminológiou a okamžite uverejnil opravu predmetnej bezpečnostnej správy. Google má v nej priznanú hodnotu 0% a prakticky vypadáva zo spolku spoločností, ktoré nemajú ošetrené kritické bezpečnostné bugy. O to viac preto platí v oblasti bezpečnosti zásada: "Dva krát meraj a raz strihaj!"
Pridať komentár
02.09 09:28 |  dodoedo
Spoločnosť Unigine Corp. oznámila uvoľnenie verzie námornej strategickej hry OilRush aj pre Linux. Hra používa proprietárny engine Unigine.
Komentárov: 1
01.09 21:27 |  dodoedo
Kent Robotti oznámil uvoľnenie novej verzie (R)ecovery (I)s (P)ossible Linux záchranného systému - RIPLinuX 10.8. Domovská stránka RIP Linux rescue system.
Pridať komentár
01.09 21:18 |  dodoedo
Linuxová distribúcia DeLi Linux, určená pre staručké počítače Pentium a 48 MB RAM pokračuje ako ConnochaetOS.
Pridať komentár
01.09 20:06 |  dodoedo
Vyšlo nové číslo (IN))SECURE Magazine 27 (pdf).
Pridať komentár
01.09 17:45 |  xenol
Rád by som dal do všeobecnej pozornosti nové slovenské Archlinux mirror dostupné cez http a ftp. Pre použivanie daného mirrora je potrebne pridať do súboru /etc/pacman.d/mirrorlist tieto riadky "Server = http://mirror.ynet.sk/pub/archlinux/$repo/os/$arch" a "Server = ftp://mirror.ynet.sk/pub/archlinux/$repo/os/$arch". Taktiež bola podaná žiadosť o zaradenie medzi oficiálne mirrory, takže neskor by sa malo mirror objaviť v rámci balíka pacman-mirrorlist. Pre záujemcov o GNU/Hurd distribúciu je projekt Archhurd, pochádzajúci z komunity Archlinuxu, možné nájsť cez http a ftp. Hardware a konektivitu poskytlo OZ Ynet, za co by som sa im chcel touto formou poďakovať.
Pridať komentár
31.08 10:38 |  dodoedo
V rámci generálnych úprav a vylepšení Chromium prehliadača vo verzii 7, sa vývojári zamerali na zvýšenie rýchlosti celého procesu vykresľovania web-stránky spolu so znížením energetickej náročnosti s tým spojených procesov. Na tento krok ich motivuje existencia nového API a nástrojov WebGL a 3D CSS transformácií. Práca s grafikou (GPU-urýchlovaná kompozícia) v Chromium sa pri tom opiera o nový špeciálny proces s názvom GPU-proces. GPU-proces zabezpečuje prístup sandboxovaných renderovacích procesov do systémových 3D API. Viac aj o súvisiacom projekte Angle.
Komentárov: 1
31.08 07:55 |  Igor Čonka
LinAPP je nová stránka, ktorá mapuje komerčné aplikácie pre Linux.
Pridať komentár
30.08 23:36 |  dodoedo
Alureon rootkit je opäť na scéne a prepísaním MBR napáda 64-bit MS Windows.
Pridať komentár
OpenOffice.org Calc pod drobnohľadom (11) - Ukážka makra

Článok

OpenOffice.org Calc pod drobnohľadom (11) - Ukážka makra

06.03.2008 12:00 | Články Prečítané : 6779 x
Potrebujete napríklad vyfarbiť bunky tabuľky podľa určitých podmienok? Dnes si ukážeme makro, ktorým rozšírime minule vytvorený kalendár o možnosť vyfarbovania buniek napríklad podľa zadaných sviatkov.

V predchádzajúcom dieli sme si ukázali, ako dokážeme využiť niektoré dátumové funkcie pri tvorbe kalendára. V základnej verzii sme však nepočítali so sviatkami, pretože tie sa postupne posúvajú – ako sa posúvajú dni. Okrem toho máme aj pohyblivý sviatok – Veľkú noc.

Zadanie sviatkov

Napriek týmto rôznorodostiam dokážeme do kalendára automaticky vyznačiť aj sviatky a to vrátane Veľkej noci bez toho, aby sme museli každoročne manuálne zadávať jej dátum. Do zošita „Kalendar“, ktorý sme si vytvorili minule pridáme tretí list „Sviatky“. Aby nás list „Pomocne“ nemýlil, schováme ho (menu „Formát – List – Skryť“).

Na liste „Sviatky“ si teraz musíme zadefinovať viacero údajov. Pretože pri tvorbe nového kalendára zostanú vyfarbené dni z minuloročného kalendára, budme musieť najprv všetky dni nastaviť na „základné“ farby a až potom budeme môcť vyfarbovať vlastné sviatky.

Pri vyfarbovaní musíme brať do úvahy dva údaje – farbu textu a farbu pozadia. Niektorí si možno budú chcieť osobitne (napríklad jemnejšom odtieňom) vyfarbiť aj tie dni v týždni, v ktorých nie sú žiadne „dátumy“. Napríklad, pondelok budú chcieť mať na zelenom odklade, ale ak začína mesiac neskôr ako v pondelok, tak dni, ktoré vlastne patria do iného mesiaca chcú vyfarbiť svetlejšou zelenou farbou.

Preto si do prvých dvoch riadkov napíšeme dvakrát dni pondelok až nedeľa. V prvom riadku nastavíme pre príslušné dni také farby textu a pozadia, ktoré chceme použiť pri príslušných číselných údajoch. V druhom riadku si nastavíme pozadie buniek, akými chceme tieto dni vyfarbiť v prípade, že číslo dňa tam nie je (farba textu preto nemá význam).


Zadefinovanie sviatkov a farieb dní“

Ďalej si do stĺpca „A“ zapíšeme všetky sviatky či iné dni, ktoré chceme v kalendári špeciálne vypísať. Aby sme urobili makro čo najuniverzálnejšie, pre každý z týchto dní si môžeme nastaviť inú farbu textu a inú farbu pozadia. Dátumy musíme naformátovať na tvar DD.MM.RR – teda musia začínať dňom a potom mesiacom. Rok nie je dôležitý, pretože sa neberie do úvahy, je však dobré ho ponechať, aby sme si mohli overiť údaje pri Veľkonočných sviatkoch. Dátumy musia byť zadané kontinuálne za sebou, pretože makro ukončí svoju činnosť na prvej prázdnej bunke.

Teraz cez „Nástroje – Makrá – Usporiadať makrá… – OpenOffice.org Basic…“ otvoríme okno „Makrá v OpenOffice.org Basic“. V ľavej časti vyhľadáme v zozname súbor s kalendárom (bude na konci zoznamu), cez rozbalovacie tlačidlo „+“ ho otvoríme, prejdeme na položku „Standard“ a nakoniec stlačíme tlačidlo „Nový“.


Vytvorenie prázdneho makra v kalendári“

Vlastné makro pre zafarbenie buniek

OpenOffice.org sa nás opýta na názov modulu (štandardne ponúkne „Module1“). Po potvrdení tohto názvu (alebo zadaní vlastného) sa nám otvorí editor makier OpenOffice.org. Tu nájdeme zadané tieto tri riadky (je to vlastne prázdne makro):

REM ***** BASIC *****
Sub Main
End Sub


Automaticky vytvorené prázdne makro v kalendári“

Text vymažeme, vložíme tam tieto funkcie (sú čiastočne okomentované a preto ich nebudeme bližšie vysvetľovať) a nakoniec uzavrieme editor makier:


Makro pre zafarbovanie buniek v editore“

function daj_stlpec (mesiac as double) as double
' Určenie prvého stĺpca mesiaca
if (mesiac mod 2)=0 then
' párne mesiace – február, apríl,…
daj_stlpec=8
else
' nepárne mesiace – január, marec
daj_stlpec=0
end if
end function

function daj_riadok (mesiac as double) as double
' Určenie prvého riadku mesiaca
' január, február – 4
' marec, apríl – 13
' máj, jún – 22
' júl, august – 31
' september, október – 40
' november, decemnber – 49
dim pom as double
daj_riadok=4
pom=mesiac-2
do while pom>0
daj_riadok=daj_riadok+9
pom=pom-2
loop
end function

Sub zafarbi_bunky
' Vlastné zafarbenie buniek kalendára
dim dokument, list_kalendar, list_sviatky, bunka as object
dim datum as string
dim den_sviatku, den, mesiac, tyzden as double
dim stlpec, riadok, sviatky as double
dim farba_pozadia_1, farba_pozadia_2, farba_textu as long

dokument=stardesktop.currentcomponent
list_kalendar=dokument.sheets(0)
list_sviatky=dokument.sheets(2)

' Vyfarbenie podľa dní v týždni
' Farby a pozadie je v prvom riadku, stĺpce A – G
for mesiac=1 to 12
' Cyklus pre všetky mesiace
stlpec=daj_stlpec(mesiac)
riadok=daj_riadok(mesiac)
for den=1 to 7
' Cyklus pre všetky dni v týždni
bunka=list_sviatky.GetCellByPosition(den-1,0)
farba_pozadia_1=bunka.cellbackcolor
farba_textu=bunka.charcolor
bunka=list_sviatky.GetCellByPosition(den-1,1)
farba_pozadia_2=bunka.cellbackcolor
for tyzden=1 to 6
' Cyklus pre všetky možné týždne v mesiaci
bunka=list_kalendar.GetCellByPosition(stlpec+den-1,riadok+tyzden-1)
if bunka.string<>"" then
bunka.cellbackcolor=farba_pozadia_1
bunka.charcolor=farba_textu
else
bunka.cellbackcolor=farba_pozadia_2
endif
next tyzden
next den
next mesiac

' Zoznam sviatkov začína na štvrtom riadku (adresuje sa od nuly, teda má číslo 3)
sviatky=3
' Cyklus sa opakuje dovtedy, kým v prvom stĺpci sú zadané nejaké dátumy
' Dátum musí byť vo formáte DD.MM.RR
do
bunka=list_sviatky.GetCellByPosition(0,sviatky)
datum=bunka.string
if datum<>"" then
' Ak je zadaný dátum
den_sviatku=val(mid(datum,1,2))
mesiac=val(mid(datum,4,2))
stlpec=daj_stlpec(mesiac)
riadok=daj_riadok(mesiac)
farba_pozadia_1=bunka.cellbackcolor
farba_textu=bunka.charcolor
for den=1 to 7
' Vyhľadanie, v ktorom dni týždňa sa nachádza príslušný sviatok
for tyzden=1 to 6
' Vyhľadanie, v ktorom týždni sa nachádza príslušný sviatok
bunka=list_kalendar.GetCellByPosition(stlpec+den-1,riadok+tyzden-1)
if val(bunka.string)=den_sviatku then
' Je to hľadaný sviatok
bunka.cellbackcolor=farba_pozadia_1
bunka.charcolor=farba_textu
endif
next tyzden
next den
endif
' Presun na ďalší sviatok
sviatky=sviatky+1
loop until datum=""
End Sub

Na záver si pridáme cez návrh formuláru do listu „Sviatky“ tlačidlo, ktoré pomenujeme „Vyfarbi kalendár“.


Vloženie a pomenovanie tlačidla do dokumentu“

V jeho vlastnostiach, na záložke „Udalosti“ priradíme k akcii „Stlačené tlačidlo myši“ makro „zafarbi_bunky“, ktoré sme práve vložili do dokumentu. Ukončíme návrh formulára a po stlačení tohto tlačidla sa na liste „Kalendar“ vyfarbia zadané dátumy (ktoré, samozrejme, nemusia byť iba sviatky). Ešte upozornime, že na poradí dátumov vôbec nezáleží, pretože sa netestuje ich postupnosť, ale každý sa vyhľadáva sám.


Priradenie makra k tlačidlu“

Pri otváraní tohto kalendára budeme upozornení, že obsahuje makrá a musíme povoliť ich spúšťanie. Preto musíme v nastaveniach OpenOffice.org (položka „Bezpečnosť“) nastaviť takú úroveň, aby sa nás OpenOffice.org aspoň opýtal, či môže toto makro spustiť.


Vlastný kalendár po vyfarbení sviatkov a dní“

Nabudúce: Štýly a formátovanie buniek.

Stránky OpenOffice.org: www.openoffice.sk


PDF verzia
Pridať komentár
Počet príspevkov : 145
Otázka...
 Distribúcia : Ubuntu 9.10
15.08.2008 09:16  |  Link
Robím pokusy s macrami a naťukal som toto:
Sub Kategoria_trafostanice

Dim premenna As Integer ' This is a comment for variable A
premenna = 9
premenna = premenna * 9

Dim dokument, listy, list_vi, bunka As Object
'Dim list_vi As Object
'Dim bunka As Object

dokument = StarDesktop.CurrentComponent
list_vi = dokument.Sheets(0)

bunka = list_vi.getCellByPosition(6, 6)
bunka.Value = 100

End Sub

Len riadok list_vi = dokument.Sheets(0)
mi vždy pri spustení v tom editore (Open Office Calc 2.4) vyhodí chybu :
Chyba pri behu.
Vlastnost alebo metóda nepodporovaná.

Čo robím zle?
Juchúúú! Písmenkujem na lukas.cerro.sk
 Kvako
Re: Otázka...
 
16.03.2009 13:01  |  Link
Musíš tam napísať list_vi = dokument.GetBySheets(0)
Prvý komentár
LinuxOS.sk © 2004-2008 | LinuxOS.sk - Team | ISSN 1337-7639
Táto stránka je optimalizovaná pre Mozillu, Operu, Konqueror a IE