Ejecuta todos los casos del bucle for

Hola que tal expertos tengo el siguiente código que ejecuta una macro en "n" numero de veces, el problema es que necesito que al principio me pregunta se deseo ejecutarla en todos los casos o solo no, si la respuesta es si, entonces que ejecute todo el código para los casos del "i" si respondo que No entonces que corra como lo esta haciendo ahorita.

La verdad lo he intentado pero el bucle queda fuera del "i" lo que ocasiona que este no se incremente

Sub pdf()
''
Application.DisplayAlerts = True
Dim fila As String
Dim ente As String


''''Siguiente caso
i = 1
For i = 99 To 114
fila = i + 1
ente = Range("A" & fila).Value
Respuesta = MsgBox("Se van a cambiar los valores por los de " & ente, vbQuestion + vbYesNoCancel)
If Respuesta = vbNo Then GoTo siguiente
If Respuesta = vbCancel Then GoTo fin

''''''''''''''

código que aplica la macro, básicamente es un formato y guarda el archivo como xlsx y PDF, después vuelve a abrir el archivo origen
''''''''''''''
siguiente:
Next i
fin:
MsgBox ("Muy bien aquí termina la Macro, Muchas gracias por participar")
End Sub

1 Respuesta

Respuesta
1

Perdona, pero no entendí muy bien.

En el código que envías, la pregunta te la hace cada vez que se incrementa i, en tu ejemplo del 99 al 114 son 15 veces, entonces te pregunta 15 veces.

Ahora si te dicen que SI, qué quieres que haga.

Si te dicen que "NO", qué quieres que haga.

Y si te dicen "CANCEL", qué quieres que haga.

Pudiera servir que me envíes el código original, y entonces te ayudo a colocar la pregunta ya que mencionas: "necesito que al principio me pregunta se deseo ejecutarla en todos los casos o solo no". Esta parte no la entiendo.

Hola gracias pro contestar, efectivamente la i se incremente y repite el código "n" numero de veces, el problema es que lo hace caso por caso, me pregunta desde el caso 1 hasta el caso 15, y en cada ocasión yo decido: SI=se ejecuta, NO=pasa al siguiente i y CANCELAR=termina la macro. Esto es necesario porque a veces no tengo que ejecutar en ciertos casos, pero resulta contraproducente se quiero ejecutarlo en toda la cuenta de la i (en este ejemplo son quince, pero a veces llegan a ser más de 100)

La idea es meter otro MsgBox antes del que ya tengo preguntándome si quiero aplicarlo en todos los casos o solo en unos, Cuando la respuesta sea SI=se ejecuta en toda la cuenta de i y cuando sea NO=se pase al MsgBox que pregunta caso por caso.

Espero haber sido puntual. PD ese es el código original

Aplica el siguiente código.

Sub pdf()
'
Application.DisplayAlerts = True
Dim fila As String
Dim ente As String
''''Siguiente caso
respini = MsgBox("Todos los valores ", vbQuestion + vbYesNoCancel)
If respini = vbYes Or respini = vbNo Then
    i = 1
    For i = 1 To 10
    If respini = vbNo Then
        Respuesta = MsgBox("Se cambia el siguiente", vbQuestion + vbYesNoCancel)
        If Respuesta = vbYes Then
            'Se ejecuta uno por uno
            'código que aplica la macro, básicamente es un formato y guarda el archivo como xlsx y PDF, después vuelve a abrir el archivo origen
            'MsgBox ("paso a paso " & i)
        End If
        If Respuesta = vbCancel Then
            Exit For
        End If
    Else
        'Respusta inicial = SI se ejecutan todos
 'código que aplica la macro, básicamente es un formato y guarda el archivo como xlsx y PDF, después vuelve a abrir el archivo origen
        'MsgBox ("Se ejecutan todos " & i)
    End If
    Next i
End If
MsgBox ("Muy bien aquí termina la Macro, Muchas gracias por participar")
End Sub

En el código que aplica la macro, va en 2 partes de la macro, puedes mandar llamar a una función con:

Call codigoaplica()

Sub codigoaplica()

'código que aplica la macro, básicamente es un formato y guarda el archivo como

End Sub

Saludos. DaM

No olvides cerrar la pregunta

Hola Muchas gracias, ayer lo estuve probando por eso no había contestado, no le entendía muy bien, solo le agregue las variables porque no estaba cambiando los valores del " i ", una vez solucionado eso integre la variable "ente" a los cuadros de mensaje y listo, jala perfectamente, gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas