Macro de confirmacion

Hola experto

por favor tengo esta instrucción pero no me funciona que puede estar mal

option Explicit
Dim rango As Range
Private Sub CommandButton1_Click()
Set rango = Range("master").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)
MsgBox rango
If rango Is Nothing Then
MsgBox "El material no se encuentra en la lista. Intenta nuevamente", vbOKOnly + vbCritical, "Cmos"
TextBox1 = Empty
TextBox1.SetFocus

sldos

1 Respuesta

Respuesta
1

Con Dim rango As Range defines rango como un rango

Luego hay instrucciones en las cuales estableces que Rango sera el rango donde se encuentre el valor buscado

Con MsgBox rango haces que Excel imprima una variable... La variable rango no se puede imprimir per se, pues no es una variable, es un objeto... pero como es un rango, su propiedad predeterminada es value... asi que tu instrucción equivale a haber puesto MsgBox rango.value

Esta instrucción imprime el valor buscado si es que existe... el problema es que si no existe.. entonces recibe el valor null... y eso no se puede imprimir

Elimina esa instrucción y sera suficiente

Ademas:

Al código que envías le falta un End If, al final, antes del End Sub

Aunque no se si esta es tu intención o no... tu código solo indica si existe o no el producto... no hace nada en el caso que exista... si quisieras que lo seleccione podrías incluirlo...

Private Sub CommandButton1_Click()

Set rango = Range("master").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)
' MsgBox rango ESTA LINEA SE ELIMINA
If rango Is Nothing Then
MsgBox "El material no se encuentra en la lista. Intenta nuevamente", vbOKOnly + vbCritical, "Cmos"
TextBox1 = Empty
TextBox1.SetFocus
Else
rango.Select
End If

End Sub

Gracias por tu respuesta

Efectivamente la instrucción es solo para que haga algo cuando no encuentre un dato.

Probé tu sugerencia pero de igual forma sale un error (se ha producido el error 1004 en tiempo de ejecucion - error en el método range de objeto_global) )y la siguiente linea se resalta de amarillo:

Set rango = Range("master").Find(What:=TextBox1, LookAt:=xlWhole, LookIn:=xlValues)

A la espera de tu apoyo.

Sldos

Enviame el archivo para entender en tu data de que se trata

Saludos,

Jaime

[email protected]

Ya lo vi...

Te falta definir el nombre de rango "master"!

Defínelo en el Administrador de Nombres... pero usa una formula para que se adapte al tamaño de tu información...

Nombre... master

Se refiere a... =DESREF(Master!$A$2,0,0,CONTARA(Master!$A:$A)-1,1)

Con eso ya funciona

Saludos,

Jaime

PD: No entiendo el porque has puesto la restricción de no tipear más que números en tu formulario de búsqueda... si en tus códigos de la hoja master tienes códigos con letras como la X

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas