Ayuda macro buscar

12/12/2008 - 11:54 por Antonio | Informe spam
Hola quiero hacer una macro para buscar nombres y quisiera me ayudeis a
pulirla ya que no se mucho de codigo y lo que hago es arreglando lo que
encentro en los foros.

Tengo un boton que ejecuta
Sub Buscar_Cli()
Dim Cliente As Variant
Cliente = InputBox("Introduzca un cliente", "MODIFICAR CLIENTE")
If Cliente = "NOMBRE" Then Exit Sub
Range("D5") = Cliente
End Sub

lo que me interesa es que si el nombre a buscar esta en el rango NOMBRES
pues nada lleve le dato a D5 y listo pero si el nombre no esta me de un
mensaje "NOMBRE FALSO" y mantenga abierto el cuadro de busqueda. Por
que., si no es mucho pedir, ¿ podria hacer que el nombre apareciera en
un desplegable?

Saludos
 

Leer las respuestas

#1 Juan M
12/12/2008 - 15:20 | Informe spam
"Antonio" escribió
Hola quiero hacer una macro para buscar nombres y quisiera me ayudeis a
pulirla ya que no se mucho de codigo y lo que hago es arreglando lo que
encentro en los foros.

Tengo un boton que ejecuta
Sub Buscar_Cli()
Dim Cliente As Variant
Cliente = InputBox("Introduzca un cliente", "MODIFICAR CLIENTE")
If Cliente = "NOMBRE" Then Exit Sub
Range("D5") = Cliente
End Sub

lo que me interesa es que si el nombre a buscar esta en el rango NOMBRES
pues nada lleve le dato a D5 y listo pero si el nombre no esta me de un
mensaje "NOMBRE FALSO" y mantenga abierto el cuadro de busqueda. Por
que., si no es mucho pedir, ¿ podria hacer que el nombre apareciera en
un desplegable?

Saludos




Hola Antonio,

Para que la macro busque el nombre que escribes en un rango puedes hacer una
cosa parecida a lo que te expongo al final.
Debes definir un nombre donde esté la lista de nombres y lo llames "nombres"
sino cambia "nombres" por el rango donde esté el listado.

Sub Buscar_Cli()

Dim Cliente As String
Dim c As Range

Cliente = InputBox("Introduzca un cliente", "MODIFICAR CLIENTE")
Set c = Range("nombres").Find(Cliente, LookIn:=xlValues,
lookat:=xlWhole)
If c Is Nothing Then Exit Sub
Range("D5") = Cliente
set c=nothing

End Sub

Para la segunda parte, necesitas crear un formulario (userform), agregar un
control combobox, y un control boton, en la llamada a ese formulario cargar
control combobox con los nombres, y al seleccionar uno y pulsar el boton
indicarle que lo escriba.

El código cambia un poco pero te evitas tener que comprobar si existe.

Creamos un formulario y lo llamammos UserForm1
añadimos un combobox y lo llamamos combobox1
añadimos un boton y lo llamamos CommandButton1
(los nombres que vienen por defecto)

Hacemos doble click en el boton o con el boton secundario seleccionamos ver
código y escribimos lo siguiente

Private Sub CommandButton1_Click()
Dim c As Range

Set c = Range("nombres").Find(ComboBox1.Text, _
LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then Exit Sub
Range("D5") = ComboBox1.Text
Set c = Nothing

End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "C2:C5"
End Sub

En las propiedades del combobox puedes pedirle que compruebe que hay
coincidencia
ComboBox1.MatchRequired = True

sino saltara un error.

Recomendación prueba todas las opciones a ver cual se adapta mejor a tus
necesidades.

Un saludo,
Juan

Preguntas similares