Duda Macro

Hola buen día, quiero ver si me puedes ayudar con una macro, es simple solo que es la primera vez que programo una.
Tengo un problema con el Do-While, es una macro en la que tengo un botón de "asignar" que cada que pongo un número en una celda el botón lo verifica con las condiciones "if" y de acuerdo a su valor le da una respuesta y le suma 1 a un contador, el problema es que debo limitar a 50 operaciones y quiero usar el Do-While para hacerlo, pero al ponerlo cuando uso el botón hace 51 operaciones sin parar y yo quiero que solo me haga una por cada número introducido y al llegar el contador a 50 ya no realice más operaciones (lo cual hace pero quiero evitar que haga las 50 operaciones corridas), te adjunto mi macro, espero me puedas ayudar.
Sub Asignar()
Do
If Range("J7") >= 1 Then
If Range("J7") <= 5 Then
Range("J16") = "Tomar la Ruta 1"
Range("G22").Select
ActiveCell.Value = ActiveCell.Value + 1
ActiveCell.Offset(1, 0).Select
End If
End If
If Range("J7") >= 6 Then
If Range("J7") <= 10 Then
Range("J16") = "Tomar la Ruta 2"
Range("G22").Select
ActiveCell.Value = ActiveCell.Value + 1
ActiveCell.Offset(1, 0).Select
End If
End If
If Range("J7") >= 11 Then
If Range("J7") <= 15 Then
Range("J16") = "Tomar la Ruta 3"
Range("G22").Select
ActiveCell.Value = ActiveCell.Value + 1
ActiveCell.Offset(1, 0).Select
End If
End If
If Range("J7") >= 16 Then
If Range("J7") <= 20 Then
Range("J16") = "Tomar la Ruta 4"
Range("G22").Select
ActiveCell.Value = ActiveCell.Value + 1
ActiveCell.Offset(1, 0).Select
End If
End If
If Range("J7") >= 21 Then
If Range("J7") <= 25 Then
Range("J16") = "Tomar la Ruta 5"
Range("G22").Select
ActiveCell.Value = ActiveCell.Value + 1
ActiveCell.Offset(1, 0).Select
End If
End If
If Range("J7") = "" Then
Range("J16") = "Introduce un número"
End If
Range("G22").Select
ActiveCell.Offset(1, 0).Select
Loop While Range("G22") <= 49
End Sub
Respuesta
1
Intenta de esta forma:
Do While Range("G22").Value < 50
    Tu-Código
Loop
Ya lo probé y funciona bien, sería bueno que quitaras el valor de G22 antes de ejecutar el código del Do While. Así limpiando la celda queda más depurado el código. Puedes hacerlo así: Range("G22"). Value = 0    - Esto va al principio, antes del Do While.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas