< návrat zpět

MS Excel


Téma: For-Next Step -1; problém s byte rss

Zaslal/a icon 23.5.2015 2:42

Narazil som na zvláštnosť, ktorú si neviem vysvetliť, totiž, zdá sa, že pri cykle s negatívnym krokom nie je možné deklarovať counter ako datový typ byte:Sub testik()
Dim i As Byte
For i = 1 To 10
Debug.Print i
Next i
End Sub
-toto beží

Sub testik()
Dim i As Byte
For i = 10 To 1 Step -1
Debug.Print i
Next i
End Sub
-toto, na môj údiv, nefunguje - končí chybou pretečenie pamäte

i musí byť deklarované ako integer:Sub testik()
Dim i As Integer
For i = 10 To 1 Step -1
Debug.Print i
Next i
End Sub

Má niekto vysvetlenie?

Zaslat odpověď >

icon #025100
eLCHa
Je to jednoduché. Byte je od 0 do 255, to víte. Ve výrazuFor i = 10 To 1 Step -1musí být všechny argumenty stejného typu (vb je tolerantní, takže nějaké výchylky jsou možné - jsem na tabletu, takže neověřím. Ve striktním jazyce by Vám tento zápis neprošel ani kompilací). Mno a protože i je Byte, -1 musí být také Byte a to není.citovat
#025101
elninoslov
Presne tak, všetky premenné musia mať rovnaký typ, alebo musia byť na rovnaký typ retypovateľné. A to číslo -1 nieje. Inak by to boli klasické jablká a hrušky.citovat
icon #025103
avatar
Ako píšem, prekvapilo ma to, páč by som to chápal tak, že od i typu byte je možné odpočítať hodnotu 1, ktorá je interpretovateľná ako byte. Program ale step chápe ako hodnotu pridávanú ku counteru a chová sa potom zrejme tak, ako popisujete. Dá sa to samozrejme obísť niekoľkými spôsobmi, napr:Sub testik()
Dim i As Byte
For i = 1 To 10
Debug.Print 10 + 1 - i
Next i
End Sub
No nič, budem na to musieť akurát pamätať, až tak veľký problém to nie je.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09