Es muy frecuente me llegue un pregunta parecida a esta:
Si tengo un Listbox en un Userform cargado desde una tabla de Excel con varias columnas, ¿cómo capturo el dato de una celda específica de la fila seleccionada?
El asunto se puede resolver de diferentes maneras.. pero hoy contaré una muy sencilla empleando la propiedad .Column del control ListBox.
Veámoslo con un ejemplo. Partiremos de la siguiente Tabla en nuestra hoja de cálculo (llamada 'Tabla1'):
A continuación construiremos nuestro UserForm (formulario de usuario) desde nuestro Editor de VB.
Constará de:
1- un Cuadro de lista/ListBox:= ListBox1
2- tres cajas de texto/TextBox:= TxtCodigo, TxtUnidades y TxtImporte
3- tres etiquetas/labels:= label1, label2 y label3:
Terminamos la parte del diseño definiendo las propiedades del ListBox1:
.RowSource = Tabla1
.ColumnCount = 3
.ColumnHeads = True
.Column.Widths40 = 40 pt;49,95 pt;49,95 pt
Ya estamos en disposición de incorporar el código necesario...
Para ello insertamos el código asociándolo a nuestro UserForm de nuestro proyecto de VBA desde el editor de VB.
Es un sencillo evento Click vinculado al ListBox
Lo que hemos conseguido es mostrar en los TextBox el valor de cada columna/campo del elemento seleccionado mediante el empleo de la propiedad .Column...
Si tengo un Listbox en un Userform cargado desde una tabla de Excel con varias columnas, ¿cómo capturo el dato de una celda específica de la fila seleccionada?
El asunto se puede resolver de diferentes maneras.. pero hoy contaré una muy sencilla empleando la propiedad .Column del control ListBox.
Veámoslo con un ejemplo. Partiremos de la siguiente Tabla en nuestra hoja de cálculo (llamada 'Tabla1'):
A continuación construiremos nuestro UserForm (formulario de usuario) desde nuestro Editor de VB.
Constará de:
1- un Cuadro de lista/ListBox:= ListBox1
2- tres cajas de texto/TextBox:= TxtCodigo, TxtUnidades y TxtImporte
3- tres etiquetas/labels:= label1, label2 y label3:
Terminamos la parte del diseño definiendo las propiedades del ListBox1:
.RowSource = Tabla1
.ColumnCount = 3
.ColumnHeads = True
.Column.Widths40 = 40 pt;49,95 pt;49,95 pt
Ya estamos en disposición de incorporar el código necesario...
Para ello insertamos el código asociándolo a nuestro UserForm de nuestro proyecto de VBA desde el editor de VB.
Es un sencillo evento Click vinculado al ListBox
Private Sub ListBox1_Click() 'si hemos seleccionado algún item... If ListBox1.ListIndex <> -1 Then Me.TxtCodigo.Value = ListBox1.Column(0) 'tomamos el dato del primer campo Me.TxtUnidades.Value = ListBox1.Column(1) 'tomamos el dato del segundo campo Me.TxtImporte.Value = ListBox1.Column(2) 'tomamos el dato del tercer campo End If End Sub
Lo que hemos conseguido es mostrar en los TextBox el valor de cada columna/campo del elemento seleccionado mediante el empleo de la propiedad .Column...
muy bueno
ResponderEliminarExcelente
ResponderEliminar;-)
EliminarA vosotros!
Hola. de nuevo yo, pude ejecutar las macros muy bien pero los datos que aparecen en los textbox son los datos de una fila del listbox y lo que estoy tratando de lograr es que los datos de una columna del listbox sean los que aparecen en los textbox. saludos
ResponderEliminaragradesco tu apoyo. saludos
ResponderEliminarHola,
Eliminarescribiré un post al respecto en cuanto me sea posible
;-)
Saludos cordiales!
ok, te agradesco. saludos
ResponderEliminar