< 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

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje