(LOS DATOS NO SE REPITEN E IGNORA CELDAS VACIAS)
Con este código podremos llenar un cuadro combinado (combobox) con DATOS UNICOS, es decir, que NO SE REPITEN, a partir de los datos de una columna. Estos datos no necesitan estar en una tabla y pueden estar uno separado del otro, ya que nuestro código solo considerará aquellas celdas que posean algún dato.
ANTES: Nuestro libro de excel debe estar habilitada para ejecutar macros, es decir, con la extención .xlsm y nuestra pestaña de programador debe estar en modo diseño para que podamos escribir código y editar los objetos que vamos a utilizar.
PASO 1: En una columna escribimos nuestros datos. Por el bien de este ejemplo, pondremos un encabezado y además separaremos uno de nuestros datos del resto, pero no es necesario.
PASO 2: Creamos un botón de comando(commandbutton) en una de nuestras hojas, en este caso la primera hoja, y tambien creamos un formulario. Hacemos doble clic sobre el botón de comando y escribimos lo siguiente:
Private Sub CommandButton1_Click()
UserForm1.Show
End SubCon esto mostraremos el formulario al hacer clic en el botón de comando.
PASO 3: En el formulario creamos un cuadro combinado (combobox). Creamos también una etiqueta (label) para describír qué datos nos mostrará el cuadro combinado.
PASO 4: Hacemos doble clic en el combobox y escribimos lo siguiente:
Private Sub ComboBox1_Enter()
Dim Dictionary As ObjectSet Dictionary = CreateObject("Scripting.Dictionary")With Sheets("Hoja1")For Each cell In .Range("B4:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
If Dictionary.exists(cell.Value) Or IsEmpty(cell.Value) ThenElseDictionary.Add cell.Value, Dictionary.Count + 1ComboBox1.AddItem cell.ValueEnd If
Next cellEnd With
End Sub
Con esto declaramos y creamos un objeto de tipo diccionario, llamado Dictionary. Situandonos en la "Hoja1", por cada celda en el rango desde B4 a B(ultima fila con un dato, en este caso 14) , si el valor de la celda existe en el diccionario; o bien, está vacío, no haremos nada; de lo contrario, añadiremos un elemento al diccionario. El elemento es un par de datos y está compuesto por una llave y su valor. La llave sería el valor de la celda, y su valor, en este caso, estaría vacío. Finalmente añadimos también el valor de la celda al combobox1.
COMENTARIO
- Las llaves y valores del diccionario para este ejemplo serían los siguientes:
- Si cambiamos el valor de Empty por un String, ejemplo: "None", quedarían de la siguiente forma:
- Si cambiamos el valor de Empty por Dictionary.count + 1, quedarían de la siguiente forma:
PASO 5: Ejecutar
LINK DE DESCARGA
No hay comentarios.:
Publicar un comentario