Access si da error que vuelva al inicio de un for

Tengo un contador de 1 a X (FOR A=1 A TO X) 

pregunto

If WW = 1355 And Weekday(Date) = vbMonday Then

MA = "mail 1355"

ELSE

NEXT

END IF

NEXT

Pepito no existe, lo que yo quiero es que me haga un NEXT pero no me deja poner 2 NEXT

1 respuesta

Respuesta
2

Simplemente ponlo así:

If WW = 1355 And Weekday(Date) = vbMonday Then

MA = "mail 1355"

END IF

NEXT

Si no se cumple al condición del if, ya te pasa al Next directamente

hola

no me deja tengo 2 NEXT dentro de SUB

FOR X= 1 TO WW:X=X+1

If WW = 1355 And Weekday(Date) = vbMonday Then

MA = "mail 1355"

END IF

NEXT

docmd.runmacro ma

NEXT

Vamos a ver, ¿la macro cuando la quieres ejecutar, cuando se cumple la condición, cuando no se cumple, o siempre en cada pasada del for?

Lo que está claro es que no puedes tener dos Nexten el mismo For

en cada paso por el FOR se van ejecutando una macro diferente dependiendo del valor

1355 macro 1355

1350 macro 1350

1200 macro 1200

pero la 1355 solo la quiero ejecutar el lunes

entonces durante el resto de los dias de la semana hay una macro que me la ejecuta 2 veces, cuando llega al 1355 y no es lunes me vuelve a ejecutar la anterior

Deberías poner todo el código que tienes, para poder ayudarte mejor

O mira, una solución "chapucera", para que vayas tirando:

Donde tienes los Next (menos el último para cerrar el bucle), los cambias por esta línea:

GoTo Siguiente

Y justo antes del último Next, pones esta otra línea

Siguiente:

W = Lista170.ListCount: n = 0

For h = 1 To W

WW = Lista170.Column(0, n): n = n + 1

If WW = 1342 Then MA = "mail 1342"

If WW = 1350 Then MA = "mail 1350"

If WW = 1355 And Weekday(Date) = vbMonday Then MA = "mail 1355"

DoCmd.RunMacro MA

next

cuando llega al valor 1355 y no es lunes me ejecuta la macro mail 1350 2 veces

Gracias

Eso te pasa porque la variable MA te conserva el valor "mail 1350" ¿Dónde declaras la variable esa? ¿Le asignas un valor previamente?

En vez de tanto If podrías encadenarlos todos con elseIf, o con un select case, y deberías resetear la variable en cada pasada del ciclo y además establecer alguna salida si no se da ninguna condición para que no se ejecute la macro, por ejemplo:

W = Lista170.ListCount: n = 0
For h = 1 To W
WW = Lista170.Column(0, n): n = n + 1
If WW = 1342 Then
   MA = "mail 1342"
ElseIf WW = 1350 Then 
   MA = "mail 1350"
ElseIf WW = 1355 And Weekday(Date) = vbMonday Then 
   MA = "mail 1355"
Else 'Si no se da ninguna condición
   Goto Siguiente
End If
DoCmd. RunMacro MA
Siguiente:
next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas