Crear una macro para buscar un valor en una columna

21/09/2005 - 14:04 por José Luis | Informe spam
Hola, no se si sera facil o dificil hacer esto lo que quiero hacer es
que dentro de un libro yo pueda crear un boton que al pinchar dos veces
sobre el, me salga un cuadro de dialogo preguntandome por un valor a
buscar... en concreto es buscar un DNI, este campo esta en 1 columna de una
hoja de ese libro entonces quiero que cuando pinche al boton y me salga
una caja con la pregunta, introducir el valor a buscar y que me salga los
datos en del DNI ese

Columna A DNI
Columna B Nombre
Columna C primer Apellido
Columna D segundo Apellido
Columna E Empresa

¿Esto se puede hacer con una macro? ¿Es dificil? ¿Existe algun ejemplo que
se aproxime a esto?

Muchas gracias a todosun saludo



=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

José Luis Telléz Ruiz EMAIL: jltellez@ono.com Movistar: 636147132


=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

Preguntas similare

Leer las respuestas

#1 José Luis
22/09/2005 - 12:19 | Informe spam
Hola KL, darte las gracias otra vez, porque el modulo estandar funciona,
pero me quedan un par de dudas:

1) Resulta curioso que si pego el modulo que tu me has escrito, funciona
sin embargo si lo escribo yo, tal como esta, con todas las comas, los puntos
y comillas...me da error ¿Eso por que es?
2) Queria saber si es posible, como puedo hacer para que busque el DNI ya
contenga 8 o 9 caracteres, eso lo queria porque algunos van con letra y
otros no, en realidad ¿como se puede hacer para buscar un valor que no
sabemos el contenido de caracteres que tiene? ¿Por ejemplo buscar el nombre
de una empresa? Que salgan todas las empresas con los caracteres que
pongamos en la caja de la preguntay que si no existe esa empresa o DNI
que nos salgo un cartel diciendo por ejemplo que no existe. He visto en
algunos ejemplos utilizar el comodin % pero no se como hacerlo.

Espero haberme explicado, gracias por anticipado.


=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

José Luis Telléz Ruiz EMAIL: Movistar: 636147132

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
"KL" escribió en el mensaje
news:
Hola Jose Luis,

Mira a ver si este es el codigo que buscas. Colocalo en un modulo estandar
de tu libro (p.ej. Modulo1). Para ello:

1) haz clic-derecho sobre el nombre de cualquier hoja de tu libro (en una
de las pestañas de la parte de abajo de la ventana de Excel).
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, ve al menu Insertar>Modulo
4) En la ventana mas grande a la derecha pega el codigo que te pongo abajo
5) Ahora pulsa Alt+F11 para volver a la hoja.
6) Activa la hoja con los datos, haz clic derecho sobre cualquier barra de
herramientas de Excel y elige 'Formularios'
7) En la barra de herramientas que aparecera a continuacion elige el
control que corresponde a boton
8) Haz clic sobre la hoja y en el dialogo que aparecera a cointinuacion
(asignar un macro) haz doble clic sobre el macro "BuscarDNI"
9) haz pruebas

Saludos,
KL

Sub BuscarDNI()
Dim rng As Range, msg As String
With Columns("A:A")
Set rng = .Find( _
What:=InputBox("Introduce el DNI: "), _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
End With
If Not rng Is Nothing Then
With rng
msg = msg & "DNI: " & .Value & Chr(13)
msg = msg & "Nombre: " & .Offset(, 1).Value & Chr(13)
msg = msg & "1r Apellido: " & .Offset(, 2).Value & Chr(13)
msg = msg & "2o Apellido: " & .Offset(, 3).Value & Chr(13)
msg = msg & "Empresa: " & .Offset(, 4).Value
MsgBox msg
End With
End If
End Sub

Respuesta Responder a este mensaje
#2 KL
22/09/2005 - 13:28 | Informe spam
Hola Jose Luis,

1) Resulta curioso que si pego el modulo que tu me has escrito,
funciona sin embargo si lo escribo yo, tal como esta, con todas las
comas, los puntos y comillas...me da error ¿Eso por que es?



Debe ser alguna cosita pequena que no salta demasiado a la vista. Por que no
pegas aqui el codigo reescrito por ti, aunque te parezca que es exactamente
igual al mio.

2) Queria saber si es posible, como puedo hacer para que busque el DNI ya
contenga 8 o 9 caracteres, eso lo queria porque algunos van con letra y
otros no, en realidad ¿como se puede hacer para buscar un valor que no
sabemos el contenido de caracteres que tiene? ¿Por ejemplo buscar el
nombre de una empresa? Que salgan todas las empresas con los caracteres
que pongamos en la caja de la preguntay que si no existe esa empresa o
DNI que nos salgo un cartel diciendo por ejemplo que no existe. He visto
en algunos ejemplos utilizar el comodin % pero no se como hacerlo.



prueba usar los caracteres {*,?,~}

* - cualquier numero de caracteres (incluido ninguno) de cualquier tipo
? - cualquier caracter unico
~ - convierte * y ? en caracteres normales

p.ej.:
1) si quieres encontrar cualquier celda que contenga DNI en cualquier parte
de la cadena, usa:

*DNI*

2) si quieres encontrar celda que contenga DNI en la cuarta posicion dentro
de la cadena, usa

???DNI*

3) si quieres encontrar celda que contenga "?Que tal?", usa

*?Que tal~?*

Esto lo puedes hacer tanto en el dialogo que aparece cuando se ejecuta el
codigo como predefinirlo dentro del mismo codigo, p.ej:

txt=InputBox("Introduce el DNI: ")
If txt<>"" Then txt="*" & txt & "*"
With Columns("A:A")
Set rng = .Find( _
What:=txt, _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
End With

Saludos,
KL
Respuesta Responder a este mensaje
#3 José Luis
22/09/2005 - 13:52 | Informe spam
Otra vez gracias KL, tambien funciona estoeres un Monstruo en esto de la
excel ya solo me faltaria saber esto:

¿Que tengo que añadir al modulo para que si no esta el valor que busco, me
salga una ventana diciendome que ese valor no existe? Un saludo

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

José Luis Telléz Ruiz EMAIL: Movistar: 636147132


=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
"KL" escribió en el mensaje
news:
Hola Jose Luis,

1) Resulta curioso que si pego el modulo que tu me has escrito,
funciona sin embargo si lo escribo yo, tal como esta, con todas las
comas, los puntos y comillas...me da error ¿Eso por que es?



Debe ser alguna cosita pequena que no salta demasiado a la vista. Por que
no pegas aqui el codigo reescrito por ti, aunque te parezca que es
exactamente igual al mio.

2) Queria saber si es posible, como puedo hacer para que busque el DNI
ya contenga 8 o 9 caracteres, eso lo queria porque algunos van con letra
y otros no, en realidad ¿como se puede hacer para buscar un valor que no
sabemos el contenido de caracteres que tiene? ¿Por ejemplo buscar el
nombre de una empresa? Que salgan todas las empresas con los caracteres
que pongamos en la caja de la preguntay que si no existe esa empresa
o DNI que nos salgo un cartel diciendo por ejemplo que no existe. He
visto en algunos ejemplos utilizar el comodin % pero no se como hacerlo.



prueba usar los caracteres {*,?,~}

* - cualquier numero de caracteres (incluido ninguno) de cualquier tipo
? - cualquier caracter unico
~ - convierte * y ? en caracteres normales

p.ej.:
1) si quieres encontrar cualquier celda que contenga DNI en cualquier
parte de la cadena, usa:

*DNI*

2) si quieres encontrar celda que contenga DNI en la cuarta posicion
dentro de la cadena, usa

???DNI*

3) si quieres encontrar celda que contenga "?Que tal?", usa

*?Que tal~?*

Esto lo puedes hacer tanto en el dialogo que aparece cuando se ejecuta el
codigo como predefinirlo dentro del mismo codigo, p.ej:

txt=InputBox("Introduce el DNI: ")
If txt<>"" Then txt="*" & txt & "*"
With Columns("A:A")
Set rng = .Find( _
What:=txt, _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
End With

Saludos,
KL


Respuesta Responder a este mensaje
#4 Deiniel Cardenas
22/09/2005 - 18:15 | Informe spam
Qué interesante el caso José Luis y KL...Ahora mi pregunta es la
siguiente...cuando haces la busqueda por dni te trae el primer valor...cómo
se puede hacer para que busque varios registros con el mismo nombre? es decir
que el dni sean iguales, pero que te traiga en la misma pantalla o al hacer
varias veces click las diferentes descripciones que tenga el cliente?
Ing. Deiniel Cárdenas


"José Luis" escribió:



Otra vez gracias KL, tambien funciona estoeres un Monstruo en esto de la
excel ya solo me faltaria saber esto:

¿Que tengo que añadir al modulo para que si no esta el valor que busco, me
salga una ventana diciendome que ese valor no existe? Un saludo

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

José Luis Telléz Ruiz EMAIL: Movistar: 636147132


=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
"KL" escribió en el mensaje
news:
> Hola Jose Luis,
>
>> 1) Resulta curioso que si pego el modulo que tu me has escrito,
>> funciona sin embargo si lo escribo yo, tal como esta, con todas las
>> comas, los puntos y comillas...me da error ¿Eso por que es?
>
> Debe ser alguna cosita pequena que no salta demasiado a la vista. Por que
> no pegas aqui el codigo reescrito por ti, aunque te parezca que es
> exactamente igual al mio.
>
>> 2) Queria saber si es posible, como puedo hacer para que busque el DNI
>> ya contenga 8 o 9 caracteres, eso lo queria porque algunos van con letra
>> y otros no, en realidad ¿como se puede hacer para buscar un valor que no
>> sabemos el contenido de caracteres que tiene? ¿Por ejemplo buscar el
>> nombre de una empresa? Que salgan todas las empresas con los caracteres
>> que pongamos en la caja de la preguntay que si no existe esa empresa
>> o DNI que nos salgo un cartel diciendo por ejemplo que no existe. He
>> visto en algunos ejemplos utilizar el comodin % pero no se como hacerlo.
>
> prueba usar los caracteres {*,?,~}
>
> * - cualquier numero de caracteres (incluido ninguno) de cualquier tipo
> ? - cualquier caracter unico
> ~ - convierte * y ? en caracteres normales
>
> p.ej.:
> 1) si quieres encontrar cualquier celda que contenga DNI en cualquier
> parte de la cadena, usa:
>
> *DNI*
>
> 2) si quieres encontrar celda que contenga DNI en la cuarta posicion
> dentro de la cadena, usa
>
> ???DNI*
>
> 3) si quieres encontrar celda que contenga "?Que tal?", usa
>
> *?Que tal~?*
>
> Esto lo puedes hacer tanto en el dialogo que aparece cuando se ejecuta el
> codigo como predefinirlo dentro del mismo codigo, p.ej:
>
> txt=InputBox("Introduce el DNI: ")
> If txt<>"" Then txt="*" & txt & "*"
> With Columns("A:A")
> Set rng = .Find( _
> What:=txt, _
> After:=.Cells(1), _
> LookIn:=xlValues, _
> LookAt:=xlPart, _
> SearchOrder:=xlByRows, _
> SearchDirection:=xlNext)
> End With
>
> Saludos,
> KL
>
>



Respuesta Responder a este mensaje
#5 KL
22/09/2005 - 22:17 | Informe spam
Hola Jose Luis,

El codigo que te puse dos mensajes atras debe hacer lo que dicies. ?Es que
no lo hace? ?Comentas mas detalles acerca de la situacion exacta en la que
el codigo no muestra el comportamiento esperado?

Saludos,
KL


"José Luis" wrote in message
news:MWwYe.97865$


Otra vez gracias KL, tambien funciona estoeres un Monstruo en esto de
la excel ya solo me faltaria saber esto:

¿Que tengo que añadir al modulo para que si no esta el valor que busco, me
salga una ventana diciendome que ese valor no existe? Un saludo

=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

José Luis Telléz Ruiz EMAIL: Movistar: 636147132


=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
"KL" escribió en el mensaje
news:
Hola Jose Luis,

1) Resulta curioso que si pego el modulo que tu me has escrito,
funciona sin embargo si lo escribo yo, tal como esta, con todas las
comas, los puntos y comillas...me da error ¿Eso por que es?



Debe ser alguna cosita pequena que no salta demasiado a la vista. Por que
no pegas aqui el codigo reescrito por ti, aunque te parezca que es
exactamente igual al mio.

2) Queria saber si es posible, como puedo hacer para que busque el DNI
ya contenga 8 o 9 caracteres, eso lo queria porque algunos van con letra
y otros no, en realidad ¿como se puede hacer para buscar un valor que no
sabemos el contenido de caracteres que tiene? ¿Por ejemplo buscar el
nombre de una empresa? Que salgan todas las empresas con los caracteres
que pongamos en la caja de la preguntay que si no existe esa empresa
o DNI que nos salgo un cartel diciendo por ejemplo que no existe. He
visto en algunos ejemplos utilizar el comodin % pero no se como hacerlo.



prueba usar los caracteres {*,?,~}

* - cualquier numero de caracteres (incluido ninguno) de cualquier tipo
? - cualquier caracter unico
~ - convierte * y ? en caracteres normales

p.ej.:
1) si quieres encontrar cualquier celda que contenga DNI en cualquier
parte de la cadena, usa:

*DNI*

2) si quieres encontrar celda que contenga DNI en la cuarta posicion
dentro de la cadena, usa

???DNI*

3) si quieres encontrar celda que contenga "?Que tal?", usa

*?Que tal~?*

Esto lo puedes hacer tanto en el dialogo que aparece cuando se ejecuta el
codigo como predefinirlo dentro del mismo codigo, p.ej:

txt=InputBox("Introduce el DNI: ")
If txt<>"" Then txt="*" & txt & "*"
With Columns("A:A")
Set rng = .Find( _
What:=txt, _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext)
End With

Saludos,
KL






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida