Ayuda con secuencia y for

Hola experto, muy buenas noches, mira actualmente tengo un programa que tiene que hacer una secuencia de medio paso (esto es en motor a pasos) la secuencia consiste en que en que me debe de mostrar en matriz 1,3,2,6,4,12,8,9 todo esto en una matriz de caja de texto...

Lo que yo hice fue irlo seleccionando con puro IF, y pues si se me hace un código algo extenso.. ¿Se podrá reducir ese código por medio de for? Y como seria??

A continuación te dejo mi código para que me entiendas...

Option Explicit
Dim bin(8) As Byte
Dim i, num As Byte
Dim cont, reg, reg1 As Integer
Private Sub cmd_arranque_Click()
tmr_secuencia = True
cont = 1
reg = 0
End Sub
Private Sub cmd_paro_Click()
tmr_secuencia.Enabled = False
lbl_sec = ""
For i = 0 To 3
txt_bin(i).Text = ""
shp_bin(i).BackColor = &H4000&
Next i
End Sub
Private Sub cmd_salir_Click()
End
End Sub
Private Sub Form_Load()
cont = 1
End Sub
Private Sub tmr_secuencia_Timer()
num = cont Or reg Or reg1
lbl_sec = num
For i = 0 To 3
bin(i) = num Mod 2
 num = num \ 2
 txt_bin(i) = bin(i)
If bin(i) = 1 Then
 shp_bin(i).BackColor = &HFFFF&
Else
 shp_bin(i).BackColor = &H8000&
End If
Next i
cont = cont * 2
reg = reg * 6
reg1 = reg1 * 5
If cont = 2 Then
cont = cont + 1
End If
If cont = 6 Then
cont = cont - 4
End If
If cont = 4 Then
cont = cont + 2
End If
If cont = 12 Then
cont = cont - 8
End If
If cont = 8 Then
cont = cont + 4
End If
If cont = 24 Then
cont = cont \ 3
End If
If cont = 16 Then
cont = cont - 7
End If
If cont = 18 Then
cont = 0
reg = 18
End If
If reg = 18 Then
reg = reg - 10
End If
If reg = 48 Then
reg = reg \ 4
End If
If reg = 72 Then
reg = reg - 68
End If
If reg = 24 Then
reg = reg \ 4
End If
If reg = 36 Then
reg = 0
reg1 = 36
End If
If reg1 = 36 Then
reg1 = reg1 - 34
End If
If reg1 = 10 Then
reg1 = reg1 - 7
End If
If reg1 = 15 Then
reg1 = reg1 - 14
End If
If reg1 = 5 Then
reg1 = 1
End If
If reg1 = 1 Then
reg1 = 0
cont = 1
End If
End Sub

Espero me puedas ayudar experto, te lo agradecería demasiado

1 respuesta

Respuesta
1

La sentencia FOR no sería idónea, la sentencia correcta sería Select Case.

Select Case Reg1            
    Case 1                
        Reg1 = 0                
        Cont = 1            
    Case 3                
        reg = 0                
        Reg1 = 36        
End Select

Yo te hice 2 casos, tu harás el resto.

muchas gracias experto, solo una pregunta mas...

¿Porque pones en ese orden los case? y no en orden?? salu2

No es orden, lo pones como tu desees.

porque la sentencia FOR no seria ideonea? con ese for solo tengo que generar la secuencia 1,3,2,6,4,12,8,9

Tu estás pidiendo mejorar la condicionante de tu sistema, el FOR es para generar bucles no para condicionantes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas