Se trata hoy de limitar qué elementos podemos insertar en un ComboBox dentro del contexto de formulario de usuario, para evitar incluir elementos fuera de la lista permitida.
Para mostrar estas propiedades ejercitaremos un ejemplo de búsqueda de datos desde un Userform.
Tenemos un listado de datos en A1:D19, con campos ID, Fecha, Concepto e Importe.
A partir del ID en un ComboBox rellenaremos tres TextBox.
Lo importante es que queremos controlar que el ComboBox asociado al ID se rellena solo con los datos habilitados.
Nuestros datos en la hoja de cálculo:
Por otro lado insertaremos un UserForm en nuestro proyecto, con
1- cuatro etiquetas - label,
2- tres TextBox:
txtFecha
txtConcepto
txtImporte
3- un CommandButton
cmdSalir
4- un ComboBox
cmbID
Lo importante será las propiedades del ComboBox a tocar para conseguir nuestro objetivo:
.MatchRequired = True
.Style = 2-fmStyleDropDownList
Modificando estas dos propiedades conjuntamente (recomendado) conseguimos la meta, y nos será imposible introducir un elemento fuera de los listados...
Estas propiedades del Combobox las podemos ajustar desde la ventana de propiedades del Control, o bien desde la programación, como se puede ver a continuación
En la ventana de código del UserForm incluimos:
El resultado es el esperado... se nos hace imposible meter valores en el ComboBox distintos de los listados...
Para mostrar estas propiedades ejercitaremos un ejemplo de búsqueda de datos desde un Userform.
Tenemos un listado de datos en A1:D19, con campos ID, Fecha, Concepto e Importe.
A partir del ID en un ComboBox rellenaremos tres TextBox.
Lo importante es que queremos controlar que el ComboBox asociado al ID se rellena solo con los datos habilitados.
Nuestros datos en la hoja de cálculo:
Por otro lado insertaremos un UserForm en nuestro proyecto, con
1- cuatro etiquetas - label,
2- tres TextBox:
txtFecha
txtConcepto
txtImporte
3- un CommandButton
cmdSalir
4- un ComboBox
cmbID
Lo importante será las propiedades del ComboBox a tocar para conseguir nuestro objetivo:
.MatchRequired = True
.Style = 2-fmStyleDropDownList
Modificando estas dos propiedades conjuntamente (recomendado) conseguimos la meta, y nos será imposible introducir un elemento fuera de los listados...
Estas propiedades del Combobox las podemos ajustar desde la ventana de propiedades del Control, o bien desde la programación, como se puede ver a continuación
En la ventana de código del UserForm incluimos:
Private Sub UserForm_Initialize() 'ajustamos propiedades para evitar introducir elementos fuera de la lista mostrada Me.cmbID.MatchRequired = True Me.cmbID.Style = fmStyleDropDownList 'cargamos los elementos del rango A2:A19 Me.cmbID.RowSource = "A2:A19" End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub cmbID_Change() 'limpia los campos informados Me.txtFecha.Value = "" Me.txtConcepto.Value = "" Me.txtImporte.Value = "" 'gestiona la búsqueda del ID deseado Dim fila As Long fila = Range("A2:A19").Find(what:=Me.cmbID.Value).Row 'carga los TextBox con valores de la lista... Me.txtFecha.Value = CDate(Cells(fila, "B").Value) Me.txtConcepto.Value = CStr(Cells(fila, "C").Value) Me.txtImporte.Value = Format(CDbl(Cells(fila, "D").Value), "#,##0") End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Sub cmdSalir_Click() 'descarga y cierra el UserForm Unload Me End Sub
El resultado es el esperado... se nos hace imposible meter valores en el ComboBox distintos de los listados...
Excelente Ismael, explicación muy clara, lo aplicaré en una pequeña APP que estoy realizando.
ResponderEliminar;-)
Eliminargracias!
me alegro te haya sido de utilidad