Formát pre funkciu CByte
Funkcia CByte premieňa číslo alebo reťazec na postupnosť bytov. Ale pozor! Musí to byť celé číslo (poprípade racionálne ale pozor na zaokrúhľovanie) v intervale od 0 do 255. Ktoré argumenty sú prípustné a ktoré nie sa dozviete z prvého príkladu.
1. príklad: Testujeme argumenty pre funkciu CByte
Sub macro On Error Resume Next Dim i As Integer Dim retazec As String Dim pole() pole() = Array(0, 100, 255, 266, 1000, -10, -255, 10.6, 254.6, "11", "45", "88", "-25", "-89", "84p", "o78", "87.2", "144.78", "78,12", "254,99", "p125,77", "127,45osel", &HA2, &HB7, &HC8) For i = LBound(pole()) To UBound(pole()) retazec = retazec & i+1 & " CByte(" & pole(i) & ") = " retazec = retazec & CByte(pole(i) retazec = retazec & Chr(10) Next MsgBox retazec End Sub
Rozbor makra:
4 CByte(256) = – mimo rozsah intervalu 0-255
6 CByte(-10) = – žiadne záporne číslo funkcia nepodporuje
8 CByte(10,6) = 11 – funkcia racionálne čísla zaokrúhľuje
11 CByte(45) = 45 – vie číslo vytiahnuť i z reťazca
22 CByte(127,45osel) = 127 – vie získať číslo aj v takomto reťazci
23 CByte(162) = 162 – rovnako ani hexadecimálne čísla nie sú problém
Formát pre funkciu CStr
Funkcia CStr prevedie argument na reťazec. Dokáže funkcia previesť väčšinu argumentov? To si ukážeme v druhom príklade.
2. príklad: Testujeme funkciu CStr
Sub macro On Error Resume Next Dim i As Integer Dim retazec As String Dim pole() pole() = Array(r, popo, pr4, mongii, 45, 45454, 444815, -1045, -455255, 104.4556, 25445.64, "455411", "4555455", "88878788", "-525", "-89", "84p", "o78", "87.2", "144.78", "78,12", "254,99", "p125,77", "127,45osel", &HA2, &HB7, &HC8) For i = LBound(pole()) To UBound(pole()) retazec = retazec & i+1 & " CStr(" & pole(i) & ") = " retazec = retazec & CStr(pole(i)) retazec = retazec & Chr(10) Next MsgBox retazec End Sub
Rozbor programu:
Vidíte, že funkcia CStr si poradí takmer so všetkým. Jedine s čím si neporadí, je napísanie znaku alebo slova tak ako píšeme numerické čísla.
Formát pre funkciu Val
Funkcia Val prevedie reťazec, ktorý predstavuje nejaké racionálne alebo celé číslo do numerickej podoby. Funkcia vracia typ Double.
3. príklad: Testujeme funkciu Val
Sub macro On Error Resume Next Dim i As Integer Dim retazec As String Dim pole() pole() = Array(r, popo, pr4, mongii, 45, 45454, 444815, -1045, -455255, 104.56, 2545.64, "455411", "4555455", "88878788", "-525", "-89", "84p", "o78", "87.2", "144.78", "151.44", "-167.444", "78,12", "254,99", "454,77", "-4578,77", "-8954,448", "p125,77", "127,45osel", &HA2, &HB7, &HC8) For i = LBound(pole()) To UBound(pole()) retazec = retazec & i+1 & " Val(" & pole(i) & ") = " retazec = retazec & Val(pole(i)) retazec = retazec & Chr(10) Next MsgBox retazec End Sub
Rozbor makra:
Táto funkcia má viacero zaujímavostí. Ukážeme si ich v jednotlivých bodoch.
1 Val() = 0 – znak r nie je číslo, vráti nulu
10 Val(104,56) = 10456 – pri takomto zápise vráti číslo ale bez desatinnej čiarky
17 Val(84p) = 84 – rovnako vie funkcia vytiahnuť čísla ak sú pred prvým výskytom znaku
18 Val(o78) = 0 – argument nezačína číslom a preto vracia 0
19 Val(87.2) = 87,2 – ak je desatinná čiarka reprezentovaná bodkou, vie to funkcia spracovať
23 Val(78,12) = 7812 – a dostávame sa k zaujímavej situácii, klasické čiarky evidentne funkcia nepodporuje. Otázka je, prečo tomu tak je? Je to možné kvôli nastaveniu môjho lokálneho počítača alebo je príčina iná? Ak viete povedať k tomu viac, tak sa podeľte o komentár pod článkom.
30 Val(162) = 162 – hexadecimálne čísla tiež nie sú problém