Bucle for vba saltando errores

Tengo un problema con el código abajo, estoy haciendo una búsqueda con un bucle for y vlookup, en la posición i = 1, hay un resultado correcto, sin embargo en i=2 no hay nada entonces se produce el error 1004 en tiempo de ejecución y el bucle se detiene, quiero que si en i=2 no hay nada ignoré el error y sucesivamente así hasta llegar a i=10, y se cumpla la acción de la condición de si correcto. Gracias de antemano por su ayuda.

Sub BsoloF()
Dim fecha, t As String
Dim tabla As Range
Dim i As Integer
i = 1
fecha = Sheets("Rooms").TextBox1.Text
For i = i To 10
t = VBA.Format(fecha, "General Number") & i
Set tabla = ThisWorkbook.Sheets("Estados").Range("A1:E1000")
dispo = Application.WorksheetFunction.VLookup(t, tabla, 4, 0)
    If dispo = Err.Number = 1004 Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = True
    ElseIf dispo = "Reservado" Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = False
    End If
Next
End Sub

2 Respuestas

Respuesta
2

intenta esta correccion en las lineas, usas on error resume next para saltar error y continuar la macro y on error goto 0 para poner Err.number=0 de lo contrario se queda en la memoria el 1004.

Set tabla = ThisWorkbook.Sheets("Estados").Range("A1:E1000")
on error resume next 
dispo = Application.WorksheetFunction.VLookup(t, tabla, 4, 0)
    If err.number>0 then 
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = True
    ElseIf dispo = "Reservado" Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = False
    End If
on error goto 0 
Respuesta

[Hola 

prueba así 

Sub BsoloF()
Dim fecha, t As String
Dim tabla As Range
Dim i As Integer
i = 1
fecha = Sheets("Rooms").TextBox1.Text
For i = i To 10
t = VBA.Format(fecha, "General Number") & i
Set tabla = ThisWorkbook.Sheets("Estados").Range("A1:E1000")
On Error Resume Next
    dispo = Application.WorksheetFunction.VLookup(t, tabla, 4, 0)
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = True
    ElseIf dispo = "Reservado" Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = False
    End If
Next
End Sub

Así

Sub BsoloF()
Dim fecha, t As String
Dim tabla As Range
Dim i As Integer
i = 1
fecha = Sheets("Rooms").TextBox1.Text
For i = i To 10
t = VBA.Format(fecha, "General Number") & i
Set tabla = ThisWorkbook.Sheets("Estados").Range("A1:E1000")
dispo = Application.WorksheetFunction.VLookup(t, tabla, 4, 0)
On Error Resume Next
    If dispo = Err.Number = 1004 Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = True
    ElseIf dispo = "Reservado" Then
    ActiveSheet.OLEObjects("CommandButton" & i).Visible = False
    End If
Next
End Sub

Disculpa debí poner el "On Error Resume Next" antes de ésta línea

dispo = Application.WorksheetFunction.VLookup(t, tabla, 4, 0)

Al usar Resume next repite la acción de la condición "Si = Reservado" aunque no se cumpla, y oculta todos los commandbuttons.

Explícame los procesos lo que va hacer la macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas