Usar CTRL-B en VBA

25/05/2006 - 03:11 por José A. Castrejón | Informe spam
Buenas tardes,
Busco algun ejemplo para hacer lo siguiente:

Tengo una formulario con varios Textbox para capturar datos de contactos,
los datos son Nombre, Direccion, etc.

Quiero insertar en el formulario un Boton para buscar si el nombre ya
existe, grabé un macro con la grabadora y me pone el codigo, sin embargo no
se como hacer para :

1.- Que busque en la columna adecuada por ejemplo Nombre que está en la
columna B.

2.- Que si existe el Nombre me muestre en por ejemplo un MSgbox con el
nombre que encontro.

3.- Si existen varios nombres iguales me los muestre.

En este ultimo caso seria como un "buscar siguiente", pues pueden existir
varios "Jorge".

Yo se que quiza sea mas rapido el metodo de usar CTRL-B, pero como son
varias personas las que van a utilizar este archivo, no deseamos que anden
"navegando" dentro de las hojas

Gracias por la ayuda

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/05/2006 - 05:14 | Informe spam
hola, José !

Busco algun ejemplo para hacer lo siguiente:
Tengo una formulario con varios Textbox para capturar datos de contactos, los datos son Nombre, Direccion, etc.
Quiero insertar en el formulario un Boton para buscar si el nombre ya existe
grabe un macro con la grabadora y me pone el codigo, sin embargo no se como hacer para:
1.- Que busque en la columna adecuada por ejemplo Nombre que esta en la columna B.
2.- Que si existe el Nombre me muestre en por ejemplo un MSgbox con el nombre que encontro.
3.- Si existen varios nombres iguales me los muestre.
En este ultimo caso seria como un "buscar siguiente", pues pueden existir varios "Jorge".
Yo se que quiza sea mas rapido el metodo de usar CTRL-B, pero como son varias personas las que van a utilizar este archivo
no deseamos que anden "navegando" dentro de las hojas...



1) existen varias 'formas' de 'encontrar' datos, [creo que] la 'mejor' dependera de que se ha de hacer con ellos despues -?-
[p.e.] usar por codigo autofiltros, filtros avanzados, funciones de hoja de calculo, etc.

2) [incluso] te serviria si en lugar de controles TextBox usas [p.e.] controles ComboBox ->vinculados a una lista de origen<-
ya que tienen la caracteristica de 'auto-seleccion' del elemento 'adecuado' -> segun los caracteres introducidos en el combo
y todavia puedes escribir datos que no existan en la lista de origen [lo que hagas con 'ello' despues... no lo has comentado] :))

3) lo que no resulta muy claro... es si vas a necesitar 'encontrar' algun Jorge... como Jorge Luis o... Luis Jorge o... ???

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 José A. Castrejón
25/05/2006 - 23:05 | Informe spam
Hola Miguel gracias por tu respuesta.
Mira el archivo en cuestion es un archivo en donde se recolectan datos de
participantes a diferentes eventos, utilizamos 2 Hojas (Captura y Contactos).
La aplicación inicia en la hoja captura y a partir de un boton se muestra un
formulario con diferentes textbox para ingresar los datos de los contactos (
ya sabes Nombre, Direccion, Telefonos, etc.). Cuando se termina la captura de
estos datos el contacto se agrega a la hoja de contactos asignandole una
clave consecutiva como ID.
La clave es la primera columna. Ahora bien, las personas que utilizaran esta
aplicacion no "ven" la hoja e contactos, solo ven el formulario de captura.

Lo que yo necesito hacer es que dentro del formulario exista un boton de
busqueda para saber si ese contacto ya fue capturado en alguna otra ocasion.
Entonces si tengo que ingresar a un contacto que se llama "Juan Perez", debo
buscar en la columna nombres si ya existe, (todas las capturas son
convertidas a Mayusculas).
Esa rutina que necesito crear, tambien la voy a utilizar para editar los
datos de los contactos, pero que sucedería si yo me acuerdo que el contacto
se llama Juan pero no recuerdo el nombre completo, entonces deberia mostrarme
quiza en un listbox todas las ocurrencias de "Juan" en la columna nombres.
Tal y como funciona el CTRL-B y despues el Buscar siguiente.
Ojala y me puedas orientar, esta vez creo que no quedo nada en el "tintero"

Saludos
José Antonio Castrejón


"Héctor Miguel" escribió:

hola, José !

> Busco algun ejemplo para hacer lo siguiente:
> Tengo una formulario con varios Textbox para capturar datos de contactos, los datos son Nombre, Direccion, etc.
> Quiero insertar en el formulario un Boton para buscar si el nombre ya existe
> grabe un macro con la grabadora y me pone el codigo, sin embargo no se como hacer para:
> 1.- Que busque en la columna adecuada por ejemplo Nombre que esta en la columna B.
> 2.- Que si existe el Nombre me muestre en por ejemplo un MSgbox con el nombre que encontro.
> 3.- Si existen varios nombres iguales me los muestre.
> En este ultimo caso seria como un "buscar siguiente", pues pueden existir varios "Jorge".
> Yo se que quiza sea mas rapido el metodo de usar CTRL-B, pero como son varias personas las que van a utilizar este archivo
> no deseamos que anden "navegando" dentro de las hojas...

1) existen varias 'formas' de 'encontrar' datos, [creo que] la 'mejor' dependera de que se ha de hacer con ellos despues -?-
[p.e.] usar por codigo autofiltros, filtros avanzados, funciones de hoja de calculo, etc.

2) [incluso] te serviria si en lugar de controles TextBox usas [p.e.] controles ComboBox ->vinculados a una lista de origen<-
ya que tienen la caracteristica de 'auto-seleccion' del elemento 'adecuado' -> segun los caracteres introducidos en el combo
y todavia puedes escribir datos que no existan en la lista de origen [lo que hagas con 'ello' despues... no lo has comentado] :))

3) lo que no resulta muy claro... es si vas a necesitar 'encontrar' algun Jorge... como Jorge Luis o... Luis Jorge o... ???

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
26/05/2006 - 06:08 | Informe spam
hola, José !

... archivo en donde se recolectan datos de participantes a diferentes eventos... 2 Hojas (Captura y Contactos).
... inicia en la hoja captura... se muestra un formulario con diferentes textbox para ingresar los datos de los contactos
... se termina la captura... el contacto se agrega a la hoja de contactos... clave consecutiva como ID... es la primera columna
las personas que utilizaran esta aplicacion no "ven" la hoja de contactos, solo... el formulario
... necesito... dentro del formulario... un boton de busqueda para saber si ese contacto ya fue capturado en alguna otra ocasion.
... tambien la voy a utilizar para editar los datos de los contactos pero
... si yo me acuerdo que el contacto se llama Juan pero no recuerdo el nombre completo
... deberia mostrarme quiza en un listbox todas las ocurrencias de "Juan" en la columna nombres...



los procedimientos que te sugiero al final, son un poquitin 'largos' :(( [pero estoy seguro que podras sacarles otro provecho] :))
los supuestos son los siguientes:
- la hoja 'contactos' se va a mantener oculta con la propiedad visible [p.e.] establecida a xlSheetVeryHidden
- en el formulario hay un TextBox1 donde se captura el nombre del contacto [dara igual si esta en mayusculas o xyz] ;)
-> si el contacto YA existe... avisa con un msgbox E IMPIDE que el usuario 'abandone' el TextBox1 :))
- tambien existe un TextBox3 donde escribes PARTE del nombre que necesitas 'encontrar' ;)
-> la busqua se acciona por un boton CommandButton1 y presenta 'el resultado' en otro control...
- la lista de los nombres [parcialmente buscados] encontrados se presenta en un control ListBox1
- al hacer un DOBLE-CLICK en algun elemento de la lista [de contactos 'encontrados'] lanza un msgbox indicando la celda donde esta ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

en el modulo de codigo del formulario ==Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
Cancel = Application.CountIf(Worksheets("contactos").Range("b:b"), TextBox1)
If Cancel Then MsgBox UCase(TextBox1) & " YA es un nombre registrado !!!": SendKeys "+{home}"
End Sub
Private Sub CommandButton1_Click()
Dim Celda As Range
ListBox1.Clear
With Worksheets("contactos")
If Not Application.CountIf(.Range("b:b"), "*" & TextBox3 & "*") > 0 Then Exit Sub
With .Range(.[b1], .[b65536].End(xlUp))
If .AutoFilter Then .AutoFilter:
.AutoFilter Field:=1, Criteria1:="*" & TextBox3 & "*"
With .Parent.AutoFilter.Range
For Each Celda In .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
ListBox1.AddItem Celda
Next
End With
.AutoFilter
End With
End With
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Celda As Range
With Worksheets("contactos")
Set Celda = .Cells.Find(ListBox1.List(ListBox1.ListIndex), .Range("b1"))
MsgBox ListBox1.List(ListBox1.ListIndex) & " se encuentra en: " & Celda.Address
Set Celda = Nothing
End With
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida