ESTE ES EL CODIGO DEL SICLO QUE NECESITO (ciclo infinito)

arturo
18 de Octubre del 2003
la variable conta esta declara como integer

conta = conta + 1
If conta = 1 Then
Label2.ForeColor = vbYellow
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False

End If
If conta = 5 Then
Label2.ForeColor = vbRed
Image1.Visible = True
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
End If
If conta = 10 Then
Label2.ForeColor = vbYellow
Image1.Visible = False
Image2.Visible = True
Image3.Visible = False
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
End If
If conta = 15 Then
Label2.ForeColor = vbRed
Image1.Visible = False
Image2.Visible = False
Image3.Visible = True
Image4.Visible = False
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
End If
If conta = 20 Then
Label2.ForeColor = vbYellow
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = True
Image5.Visible = False
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
End If
If conta = 25 Then
Label2.ForeColor = vbRed
Image1.Visible = False
Image2.Visible = False
Image3.Visible = False
Image4.Visible = False
Image5.Visible = True
Image6.Visible = False
Image7.Visible = False
Image8.Visible = False
Image9.Visible = False
end if
nesesito un ciclo qe cuando llegue al ultimo if vuelva al primero y siga infinitamente..............

Baltasar
18 de Octubre del 2003
Pues tal y como te han indicado en varias ocasiones a través del foro, lo que debes hacer es inicializar ese contador a cero, para que vuelva a empezar.

Esto es:

al principio del código, antes de CONTA=CONTA+1 pones esta línea:

IF CODIGO=30 THEN CODIGO=0

y ya está.

Ahora paso a las críticas, jaja:
el método que estás usando es un poco inusual, deberías usar un array de images, y el código se te quedaría en unas pocas líneas, menos de diez. Otro tema que deberías modificar es el siguiente: usas el contador saltando de cinco en cinco, que no digo que falle, pero lo correcto sería usarlo de uno en uno y poner el inervalo algo mayor (a no ser que necesites ese salto de cinco).

Si quieres otra solución te pongo úna manera de usar las comparaciones como valores:

conta = conta + 1
conta2 = int ( conta / 5 )
if conta2 / 2 = int ( conta2 / 2 ) then Label2.ForeColor = vbYellow
else
Label2.ForeColor = vbred
endif
Image1.Visible = (conta2=2)
Image2.Visible = (conta2=3)
Image3.Visible = (conta2=4)
Image4.Visible = (conta2=5)
Image5.Visible = (conta2=6)

No trato image6, 7 , 8, y 9 porque veo que tu código no las trata.

Con estas líneas haces lo mismo que antes, pero mucho más resumido.

Si te fijas, la comparación ( conta2 = 3 ) será verdadero cuando conta2 valga 3, caso contrario es falso. De esa manera ahorras mucho código, que de cara a futuras modificaciones verás que es muy útil.

Saludos

Juan
18 de Octubre del 2003
Bueno, voy a aportar mi granito de arena para mejorar
un poco ese código.

La instrucción

conta2 = int ( conta / 5 )

Puede escribirse así:

conta2 = conta 5

Usando el operador de división de entero .

También , se puede mejorar esta instrucción:

if conta2 / 2 = int ( conta2 / 2 ) then ...

Ya que eso es equivalente a esto otro:

if (conta2 mod 2) = 0 then ...