Me costó redactar el título de la pregunta, lo siento. Creé un formulario VBA. En linebx
combo bx tengo el siguiente código, que rellena previamente los cuadros de texto PilotBx
y TailBx
.
Mi problema es que cuando linebx se completa con un valor que no está en ese menú desplegable de linebx (no en el rango VLookup), envía un mensaje de error
"Error de tiempo de ejecución '1004': no se puede obtener la propiedad VLookup de la clase worksheetFunction"
Sé lo que esto significa, pero no estoy seguro de cómo evitarlo.
Necesito el código para completar previamente los cuadros de texto PilotBx
y TailBx
, si LineBx
coincide, el menú desplegable (rango VLookup) y si no es así, lo necesito para aceptar el número de LineBx
ingresado y dejar los cuadros de texto PilotBx
y TailBx
en blanco.
Por favor, hágamelo saber si tiene alguna pregunta o detalles que pueda dar para ayudar. ¡Gracias de antemano por cualquier ayuda!
Aquí hay una imagen para el formulario que creé:
Dim z As Double Dim h As Double Dim k As String z = LineBx.Value h = Application.WorksheetFunction.VLookup(LineBx.Value, Sheets("StepBrief").Range("A2:E43"), 1, False) If h = z Then k = True Else k = False End If If k = True Then TailBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 3, False) PilotBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 2, False) Else TailBx.Value = "" PilotBx.Value = "" End If
Puedes ir con:
Dim h As Double Dim k As String z = LineBx.Value h = -1 on error resume next h = Application.WorksheetFunction.VLookup(LineBx.Value, Sheets("StepBrief").Range("A2:E43"), 1, False) on error goto 0
Ejecuta su búsqueda, no genera un error cuando no se encuentra la búsqueda. h será -1 lo que no será igual a z. Puede usar cualquier valor para establecer h siempre que no sea igual a z, está bien.
Suprimí el mensaje de error agregando On Error Resume Next
en la parte superior y "Borrado" PilotBx
y TailBx
. Sentí que era una forma económica de evitarlo, pero funcionó.
z = LineBx.Value On Error Resume Next TailBx.Value = "" PilotBx.Value = "" TailBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 3, False) PilotBx.Text = Application.WorksheetFunction.VLookup(z, Sheets("StepBrief").Range("A2:E43"), 2, False)