Variable de objeto o bloque whit no establecido

Ando por aqui de nuevo con ganas de aprender, me gustaría me apoyaran con un Tema que tengo.

Estos haciendo un userform en el cual coloca anticipos de gastos pero estos son reverenciados a una base de datos previa, es decir primero se tiene que capturar el evento con un siento ID y al cargar los gastos de ese id se reverencian al mismo, al capturar el gasto en el user y darle guardar busca en la hoja 2 la referencia de evento, si no la encuentra no permite capturar el gasto. Pero para esto me sale un error 91 en tiempo de ejecución, variable de objeto o bloque whit no establecido.

Dejo mi codigo completo.

Private Sub CommandButton1_Click()

Hoja2.Select

                                           ESTO ES LO QUE ME SEÑALA EN EL ERROR
If Cells.Find(What:=TextBox3.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate = False Then
MsgBox ("referencia de cliente no capturada"), vbCritical, "Falta calturar viaje"
Else
Sheets("Control de gastos").Select
Range("a1").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = DTPicker1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = ComboBox1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = ComboBox2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = TextBox1
End If
End Sub

Private Sub UserForm_Initialize()
Sheets("Control de gastos").Select
Range("xew1").Select
Do While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop

Sheets("Control de gastos").Select
Range("xex1").Select
Do While ActiveCell <> Empty
ComboBox2.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Respuesta

El método find devuelve un objeto... ese objeto hay que compararlo con un valor... no aplicarle el método activate... y eso tampoco se puede compara con un valor simple

En lugar de .Activate podría haber sido .Value, pero como te mencionaba el método Find devuelve un objeto, y en la bibliografía de Microsoft se indica que lo que se devuelve en caso de encontrar nada es Nothing (ningún objeto)

¿Tu estas queriendo que la condición del if muestre el mensaje si no encuentra nada?

Entonces:

If Cells.Find(What:=TextBox3.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate = False   Then

yo lo cambiaría por

If Cells.Find(What:=TextBox3.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)     is Nothing    Then

Prueba y comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas