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

#1 Re: Calc » Prosim, pomozte s Makrem/Funkci » 10. 11. 2009 15:57:34

Tohle je muj nejlepsi vytvor 7 dni pote, co jsem zjistil, ze existuje VB. Kdyby jste si nekdo vsimnul, ze delam neco zbytecne slozite, byl bych rad za radu.


Sub cteni_data

    list_cteni = 1
    sloupeccteni = 0
    list_zapis = 0
    sloupeczapis = 10
    radekcteni = 0
    radekzapis = 7
    sloupecj = 9
    sloupecor = 8
    max = 0
    sloupecstop = 1
    radekstop = 6
    sloupecmax = 13
    sloupeca = 0
    radektimea = 10
    radektimeb = 11
    radektime1a = 23
    radektime1b = 24
    radektime2a = 33
    radektime2b = 34
    radektime3a = 43
    radektime3b = 44
    radekdatea = 6
    radekdateb = 7
    radekdate1a = 20
    radekdate1b = 21
    radekdate2a = 30
    radekdate2b = 31
    radekdate3a = 40
    radekdate3b = 41
       
    dokument = ThisComponent
    vyber = dokument.currentselection
    listcteni = dokument.sheets(list_cteni)
    listzapis = dokument.sheets(list_zapis)
    bunkastop = listzapis.getcellbyposition(sloupecstop, radekstop)
   
    time1a = listzapis.getcellbyposition(sloupeca, radektime1a)
    time1b = listzapis.getcellbyposition(sloupeca, radektime1b)
    time2a = listzapis.getcellbyposition(sloupeca, radektime2a)
    time2b = listzapis.getcellbyposition(sloupeca, radektime2b)
    time3a = listzapis.getcellbyposition(sloupeca, radektime3a)
    time3b = listzapis.getcellbyposition(sloupeca, radektime3b)
    timea = listzapis.getcellbyposition(sloupeca, radektimea)
    timeb = listzapis.getcellbyposition(sloupeca, radektimeb)
    date1a = listzapis.getcellbyposition(sloupeca, radekdate1a)
    date1b = listzapis.getcellbyposition(sloupeca, radekdate1b)
    date2a = listzapis.getcellbyposition(sloupeca, radekdate2a)
    date2b = listzapis.getcellbyposition(sloupeca, radekdate2b)
    date3a = listzapis.getcellbyposition(sloupeca, radekdate3a)
    date3b = listzapis.getcellbyposition(sloupeca, radekdate3b)
    datea = listzapis.getcellbyposition(sloupeca, radekdatea)
    dateb = listzapis.getcellbyposition(sloupeca, radekdateb)
       
Do
    bunkacteni = listcteni.getcellbyposition(sloupeccteni, radekcteni)
    bunkazapis = listzapis.getcellbyposition(sloupeczapis, radekzapis)
    bunkaj = listcteni.getcellbyposition(sloupecj, radekcteni)
   

IF((fix(bunkacteni.value)>datea.value) and (fix(bunkacteni.value)<dateb.value)) Then
   
if (fix(bunkacteni.value) > fix(bunkazapis.value)) then

                bunkazapismax = listzapis.getcellbyposition(sloupecmax, radekzapis)
                bunkazapismax.setvalue(max)
                max = 0
                radekzapis = radekzapis + 1
                bunkazapis = listzapis.getcellbyposition(sloupeczapis, radekzapis)
                bunkazapis.setvalue(bunkacteni.value)   
                bunkaor = listzapis.getcellbyposition(sloupecor, radekzapis)
               
            If     ((bunkaor.value>date1a.value) and (bunkaor.value<date1b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time1a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time1b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Elseif    ((bunkaor.value>date2a.value) and (bunkaor.value<date2b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time2a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time2b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Elseif ((bunkaor.value>date3a.value) and (bunkaor.value<date3b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time3a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time3b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Else
            if ((bunkacteni.value-fix(bunkacteni.value)>timea.value) and (bunkacteni.value-fix(bunkacteni.value)<timeb.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            end if   
            End if   
else
           
            If     ((bunkaor.value>date1a.value) and (bunkaor.value<date1b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time1a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time1b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Elseif    ((bunkaor.value>date2a.value) and (bunkaor.value<date2b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time2a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time2b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Elseif ((bunkaor.value>date3a.value) and (bunkaor.value<date3b.value) and ((bunkacteni.value-fix(bunkacteni.value))>time3a.value) and ((bunkacteni.value-fix(bunkacteni.value))<time3b.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            Else
            if ((bunkacteni.value-fix(bunkacteni.value)>timea.value) and (bunkacteni.value-fix(bunkacteni.value)<timeb.value)) then
            if (bunkaj.value > max) then
            max = bunkaj.value
            end if
            end if   
            End if
end if

END IF

radekcteni = radekcteni + 1

loop until    radekcteni = 65536 or bunkastop.value = 1

msgbox "Ufffffffff. To byla ale drina. smile ",10,"Hotovo"

bunkastop.setvalue(0)

End Sub

Sub vynulovat

    listt = 0
    radekk = 8
    sloupec1 = 10
    sloupec2 = 13
   
    dokument = ThisComponent
    vyber = dokument.currentselection
    list = dokument.sheets(listt)
   
        radekz = 373
        Do
        radekz = radekz - 1
        bunka_erase = list.getCellbyposition(sloupec1, radekz)
        bunka_erase.setvalue(0)
        Loop Until radekz = radekk   
       
        radekz = 373
        Do
        radekz = radekz - 1
        bunka_erase2 = list.getCellbyposition(sloupec2, radekz)
        bunka_erase2.setvalue(0)   
        Loop Until radekz = radekk
       
msgbox "Cisto",10,""       
       
End Sub

Sub stp

    listt = 0
    sloupecstop = 1
    radekstop = 6
   
    dokument = ThisComponent
    vyber = dokument.currentselection
    list = dokument.sheets(listt)
   
    bunkastop = list.getcellbyposition(sloupecstop, radekstop)
    bunkastop.setvalue(1)

End Sub

#2 Re: Calc » Prosim, pomozte s Makrem/Funkci » 10. 11. 2009 15:50:05

Narazil jsem na zajimavou zvlastnost. Nefunguje mi >= nebo <= . Krajni hodnoty ( = ) mi makro ignorovalo. Osetril jsem to jinak, ale zajimalo by mne, jestli jen delam neco spatne, nebo VB <= a >= skutecne nezna.

#3 Re: Calc » Makra Pro Zacatecniky » 10. 11. 2009 15:39:33

Proboha nezasirejte to tu zbytecnejma prispevkama.

#4 Re: Calc » Prosim, pomozte s Makrem/Funkci » 6. 11. 2009 08:08:29

mno nic, napsal jsem to takhle:

   If radekz < radekk then
Do
   radekz = radekz + 1
   bunka_erase = list.getCellbyposition(sloupec_1, radekz)
   bunka_erase.setvalue(0)   
Loop Until radekz = radekk
   End if

#5 Re: Calc » Prosim, pomozte s Makrem/Funkci » 5. 11. 2009 13:31:08

Nevite nekdo, co tu mam spatne?

sub Reset
   
    list = 3
    radekz = 3
    radekk =252
    sloupec = 14
    hodnota = 0

   
    dokument = ThisComponent
    vyber = dokument.currentselection
    list = dokument.sheets(list)
    oblast = list.getCellRangebyposition(sloupec ,radekz, sloupec, radekk)
   
oblast.value = hodnota
   
end sub

#6 Re: Calc » Makra Pro Zacatecniky » 5. 11. 2009 11:22:48

Forum je lepsi, novacek nehleda ve Wiki, ale ve foru.

#7 Re: Calc » Prosim, pomozte s Makrem/Funkci » 4. 11. 2009 18:06:49

TAk mam dalsi dotazy.

Potrebuju upravit makro tak, aby zapsalo hodnotu do vsech bunek v oblasti. Jak se definuje oblast?

Jak se spousti marko makrem?

Nemate nekdo odkaz na seznam vsech prikazu pro makra a jejich funkci? Abych vas tu porad neotravoval.

#8 Calc » Makra Pro Zacatecniky » 4. 11. 2009 17:03:38

Borivoj
Odpovědí: 12

2.11. Jsem se rozhodl naucit se pracovat s Makry. Sem budu pro zacatecniky davat informace, ktery mi pomohly s ucenim


Zaklady definic a vzorcu:

priklad od "hanus"e: http://ooo.e-hanus.cz/pricitani.01.ods

Podminky:

priklad: http://members.chello.cz/ladinek/ooo/calc/makra.html

Dalsi vyborny zdroj pro zacatecniky:
http://download.microsoft.com/download/ … VB2005.pdf

#9 Re: Calc » Prosim, pomozte s Makrem/Funkci » 3. 11. 2009 04:59:51

Neslo by to s tim casem udelat nejak prez databazi?

#10 Calc » Prosim, pomozte s Makrem/Funkci » 2. 11. 2009 19:14:50

Borivoj
Odpovědí: 33

Doufam, ze to na foru nikde neni, ja to nenasel.

1) Je mozny, aby mi v bunce bezel aktualni cas?

2) Potreboval bych makro, ktery aktivuju tlacitkem a jednorazove zapise do dane bunky definovanou hodnotu. (prepise obsah bunky)

3) Potreboval bych makro, ktery precte cislo z bunky A, pricte cislo z bunky B a vysledkem prepise hodnotu v bunce A. Opet ho potrebuju aktivovat jednorazove stiskem tlacitka.

Diky za pomoc

Zápatí

Používáme FluxBB