Format desiatkových a hexadecimálnych čísel pre funkciu CInt
Skúsme sa pozrieť na rôzne argumenty, ktorými môžeme nakŕmiť funkciu CInt. Pre zopakovanie, CInt vracia celé čísla. V prvom príklade sa pozrieme na rôzne tvary desiatkových čísel, ktoré môžeme použiť vo funkcii CInt.
1. príklad: Formát desiatkových čísel pre funkciu CInt
Sub macro On Error Resume Next Dim i As Integer Dim retazec As String Dim pole() pole() = Array(10, 5.4, 14.55, "36", "p38", "545lop", "565.48jok", -468, -25.44, "-p454", "-15ldl", "-151.15421", "-155.144pklp", 30000000, -455555555, "54515554", "-25621446452") For i = LBound(pole()) To UBound(pole()) retazec = retazec & i+1 & " CInt(" & pole(i) & ") = " retazec = retazec & CInt(pole(i)) retazec = retazec & Chr(10) Next Msgbox retazec End Sub
Rozbor makra: Vytvorili sme program, kde testujeme viacero možností. A nielen tie správne. Z toho dôvodu sme pridali do makra On Error Resume Next, aby nám samotný program nespadol. Miesto toho v bodoch si ukážeme najkritickejšie chyby a postrehy.
4 CInt(36) = 36 – to že je číslo zabalené do reťazca, nie je problém
5 CInt(p38) = 0 – p nie je celé číslo
14 CInt(30000000) = – a máme problém, keďže celé číslo má rozsah od –32 768 do 32 767, došlo k pretečeniu
V 15, 16 a 17 nastáva rovnaká situácia ako pri 14.
Fajn, desiatkové čísla máme za sebou, skúsme si zaexperimentovať s hexadecimálnymi číslami. Poďme nato.
2. príklad: Formát hexadecimálnych čísel pre funkciu CInt
Sub macro
On Error Resume Next
Dim i As Integer
Dim retazec As String
Dim pole()
pole() = Array(&HA, &H1A, &H3B, &HDE, &H1112, &H5EFD, &HA8A2)
For i = LBound(pole()) To UBound(pole())
retazec = retazec & i+1 & " CInt(" & pole(i) & ") = "
retazec = retazec & CInt(pole(i))
retazec = retazec & Chr(10)
Next
Msgbox retazec
End Sub
Rozbor programu:
Na definovanie hexadecimálneho čísla použijeme formulu &H. Po tejto formule nasleduje samotný hexadecimálny zápis konkrétneho čísla.
7 CInt(43170) = – opäť nastáva pretečenie
Format desiatkových a hexadecimálnych čísel pre funkciu CLng
Funkcia CLng oproti CInt sa vyznačuje tým, že vracia celé dlhé čísla. Rozsah celých dlhých čísel je od –2 147 483 648 až 2 147 483 647, čo nám dáva viac možností ako obyčajné celé číslo. Pozrime si príklad a možností, ktoré nám celé dlhé číslo poskytuje.
3. príklad: Formát desiatkových čísel pre funkciu CLng
Sub macro
On Error Resume Next
Dim i As Integer
Dim retazec As String
Dim pole()
pole() = Array(25, 11.7, 17.45, "4578", "kh488", "458polh", "455.458sac", -4982, -154.447, "-vdsd5545", "-787878vvv", "-454.4486", "-787.125vdpdp", 2545878, -7854625, "56548978", "-89852354", "785654526", "-456245978", "4568745891", "-8787878787")
For i = LBound(pole()) To UBound(pole())
retazec = retazec & i+1 & " CLng(" & pole(i) & ") = "
retazec = retazec & CLng(pole(i))
retazec = retazec & Chr(10)
Next
Msgbox retazec
End Sub
Rozbor makra:
20 CLng(4568745891) = – mimo rozsah celého dlhého čísla
21 CLng(-8787878787) = – mimo rozsah celého dlhého čísla
Neminú nás ani hexadecimálne čísla pre funkciu CLng.
4. program: Formát hexadecimálnych čísel pre funkciu CLng
Sub macro On Error Resume Next Dim i As Integer Dim retazec As String Dim pole() pole() = Array(&HB, &HC3, &H3A8, &H7F1D, &HB4EDF, &H5AB9F4, &HAAACCC7) For i = LBound(pole()) To UBound(pole()) retazec = retazec & i+1 & " CLng(" & pole(i) & ") = " retazec = retazec & CLng(pole(i)) retazec = retazec & Chr(10) Next Msgbox retazec End Sub