Komentáře Programovanie makier v LibreOffice: Podmienky (1)

user avatar neutr
Odpovědět
Programovanie makier v LibreOffice: Podmienky (1)
4. 05. 2016, 11:48:10
Edo jen malý detail. InputBox je z principu typem proměnné string. InputBox to předá a sešit to vezme jako číslo - v textové podobě. Libre office umí i s takovým číslem počítat, ale když se zadá například do buňky přímo - například [i]Cell.Value = Vstup[/i] tak se objeví nula.

V tomto případě se to obchází dotazem, který to vyhodnotí správně jako IsNumeric(), ale aby to šlo použít musí být předeklarováno na číslo.
- Tedy buď Val([i]Vstup[/i]), nebo hned na začátku obalit InputBox
- Vstup = Val(InputBox("Zadajte hodnotu", "Hodnotenie vstupu"))

Potom již dotaz na typ není potřeba, ale někdy se hodí opravdu dodefinovat typ dodatečně. Datumové a časové funkce mohou být v textovém tvaru, ale jde z principu o čísla. Takže například
IF IsNumeric(Vstup) = true Then
cislo = Val(Vstup)
ElseIF ......
...
End If
user avatar Eduard Boldižár
Odpovědět
Re:Programovanie makier v LibreOffice: Podmienky (1)
4. 05. 2016, 18:52:49
ďakujem za reakciu, človek vždy všetko neošetrí a stále sa má čo učiť ;)
user avatar lp.
Odpovědět
Programovanie makier v LibreOffice: Podmienky (1)
4. 05. 2016, 13:31:48
Dovolím si trochu kritiky.

* Nějak jsem zatím neviděl zmínku o deklaraci

option explicit

Hodí se nejen začátečníkům.

* Bylo by možné ukázky maker odsazovat? Mizerně se to čte.

* Ukázky typu:

Cislo = IsNumeric(Vstup)
...
Elseif Cislo = True Then
...

se mi moc nelíbí.
- Proměnná Císlo neobsahuje číslo, ale boolovskou proměnnou. K čitelnosti to nepřispívá.
- Proč je tak častá touha vyhodnocovat booleovské proměnné testem True = True ?

Pro mne je výraz

Elseif IsNumeric(Vstup) Then

podstatně čitelnější.
user avatar Eduard Boldižár
Odpovědět
Re:Programovanie makier v LibreOffice: Podmienky (1)
4. 05. 2016, 18:35:36
O Option Explicit už som čitateľov oboznámil v tomto článku http://www.openoffice.cz/navody/programovanie-makier-v-libreoffice-deklaracie-premennych a v tomto dieli mi ako nutnosť použitia Option Explicit neprišla, mal som v pláne ukázať iné veci. Samozrejme, každá oblasť sa dá vysvetliť mnohými príkladmi, ale ďakujem za feedback. Áno, nabudúce už budem osadzovať
user avatar Petr
Odpovědět
Programovanie makier v LibreOffice: Podmienky (1)
26. 10. 2016, 19:59:09
Ahoj,

nějak mi ten příklad v počítači neběžel, tak jsem to zkusil trochu upravit:

Sub KontrolaVstupuReinvented
inpt = InputBox("Zadejte data")
nmbr = IsNumeric(inpt)
dt = IsDate(inpt)

Print "číslo = " + nmbr
Print "datum = " + dt 'POZOR: když nejsou zadáda žádná data, BASIC vyhodotí vstup jako datum!

If inpt = "" Then
Print "Nebyla zadána žádná data!"
Elseif nmbr = True Then
Print "Bylo zadáno číslo"
Elseif dt = True Then
Print "Bylo zadáno datum"
Else
Print "Byl zadán textový řetězec"
End If

End Sub

Nejvíc mě ale překvapilo, že se mi proměnná inpt, pokud nejsou zadána žádná data, vyhodnocuje jako datum. Nevíte někdo, proč to tak je?
user avatar j-pastierik
Odpovědět
Re:Programovanie makier v LibreOffice: Podmienky (1)
28. 10. 2016, 07:58:36
IsDate("") vracia hodnotu True, je to jej vlastnosť.
user avatar neutr
Odpovědět
Re:Programovanie makier v LibreOffice: Podmienky (1)
28. 10. 2016, 18:14:45
Tohle je dané nastavením buňky. jde o to, že můžete zasat "nic" s OK, nebo zrušit - pak by tam mělo být false, ale verze AOO/LO se mohou odlišovat. Dodnes některé funkce sešitu vrací FALSE = 0 a TRUE = 1, nebo FALSE = -1 a TRUE = 0. Inputbox by měl vracet -1/0.


Když tedy zaentrujete nic - je to nula, nebo jednička. Pak už stačí mít zapnuté automatické rozpoznávání formátu a hopne tam datum - nejspíš 31. prosinec 1899, nebo 1. leden 1900.


Ono stačí navolit čísla (volba "vše" udělá často datumy). Stane se někdy i při této volbě, že tam dříve datumy byly, obsah se smazal, ale formát zůstal. Takže se podívejte na FORMÁT > BUŇKY > ČÍSLA. Podobný problém Vás může potkat s logickou hodnotou. Když tam zapomenete logický formát který vznikl zejména chybným zadáním vzorců tak to vrací FALSE/TRUE. Když navíc budete mít úzké sloupce bude to vypadat jako chyba.
user avatar neutr
Odpovědět
Re:Re:Programovanie makier v LibreOffice: Podmienky (1)
28. 10. 2016, 18:26:11
To hlasní jsem vynechal - omlouvám se.

Jakmile byla proměnná dříve zadeklarovaná tak pochopitelně vrací datum vždy (datumy 0 a 1 jsou ta historická data přelomu 1899/1900).

To má ing Pastierik pravdu - chtěl jsem jen napsat že jste měl předeklarovat proměnnou stejně jako byste to musel udělat s formátem u buňky sešitu.
 
 
woo jaw demo hz