H o l a : Son varias actividades que se deben considerar. Sigue las indicaciones.
1. Para que se muestren todos los resultados según la letra o letras ingresadas, deberás poner un combobox de CotrolActiveX, ya que en un textbox no puedes desplegar más de un valor.
2. Para que se muestre el teléfono en el textbox, deberás capturar un nombre completo en el combobox o elegir con el mouse un nombre de la lista desplegada en el combobox.
3. No se puede poner el autocompletar, ya que si se utiliza el autocompletar, se perdería la lista desplegable, es una limitante del combobox, ya que al mostrar un valor completo en el combobox, es como si eligieras un dato de la lista, entonces la lista se cierra.
4. Al poner una letra, en automático te va a mostrar todos los números, nombres y teléfonos, donde el nombre corresponda a la letra capturada. En el siguiente ejemplo, en el combobox capturé la letra "j", en automático se muestran los nombres "Juan", "Jose" y "Jorge"
6. Para elegir un nombre, simplemente con el mouse, selecciona del desplegable el nombre y en automático se llenará el textbox con el teléfono.
6. La macro está diseñada para que los datos estén en las columnas B, C y D; además los datos deberá empezar en la fila 5, tal y como lo muestra tu ejemplo.
7. El combobox de ActiveX deberá tener las siguientes propiedades:
Ajusta en la propiedad ColumnWidths el ancho de las columnas para cada dato del combobox.
8. Si escribes el nombre completo, por ejemplo "ana", en automático se llena el textbox sin necesidad de seleccionar con el mouse el nombre de la lista:
9. Para que el combobox se cargué con los datos existentes en la hoja, pon la siguiente macro en los eventos de ThisWorkbook
Private Sub Workbook_Open()
'Por.Dante Amor
Sheets("Dir. Telefónico").Select
ActiveSheet.ComboBox1.Clear
For i = Range("C" & Rows.Count).End(xlUp).Row To 5 Step -1
ActiveSheet.ComboBox1.AddItem Cells(i, "B"), 0
ActiveSheet.ComboBox1.List(0, 1) = Cells(i, "C")
ActiveSheet.ComboBox1.List(0, 2) = Cells(i, "D")
Next
End Sub
Instrucciones para poner la macro en los eventos ThisWorkbook
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
- En el panel del lado derecho copia la macro
10. Pon el siguiente código en los eventos de la hoja "Dir. Telefónico"
NOTA: Al principio de la macro está declarada la variable "cargando".
Dim cargando
Private Sub ComboBox1_Change()
'Por.Dante Amor
Application.ScreenUpdating = False
If cargando = True Then Exit Sub
'
TextBox1 = ""
If ComboBox1.ListIndex > -1 And ComboBox1 <> "" Then
abuscar = ComboBox1.List(ComboBox1.ListIndex, 1)
Else
abuscar = ComboBox1.Text
End If
If ComboBox1.Text <> "" Then
Set b = Columns("C").Find(abuscar, lookat:=xlWhole)
If Not b Is Nothing Then
TextBox1 = b.Offset(0, 1)
End If
End If
'
cargando = True
If ComboBox1.ListIndex > -1 Then
dato = ComboBox1.List(ComboBox1.ListIndex, 1)
Else
dato = ComboBox1.Text
End If
ComboBox1.Clear
For i = Range("C" & Rows.Count).End(xlUp).Row To 5 Step -1
If Left(UCase(Cells(i, "C")), Len(dato)) = UCase(dato) Then
ComboBox1.AddItem Cells(i, "B"), 0
ComboBox1.List(0, 1) = Cells(i, "C")
ComboBox1.List(0, 2) = Cells(i, "D")
End If
Next
ComboBox1.Text = dato
'
'En esta parte se activa la lista
Range("D6000"). Activate
ComboBox1. Activate
ComboBox1. DropDown
'
Application.ScreenUpdating = True
cargando = False
End Sub
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- En el panel del lado derecho copia la macro
Son varias indicaciones que deberás seguir al pie de la letra. Si no te funciona, envíame tu archivo para realizar las adaptaciones necesarias.
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario “Darwin Zavala” y el título de esta pregunta.
Avísame en esta pregunta cuando me lo hayas enviado.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias