Empezaré hoy una serie de algunos post donde explicar cómo conseguir formatear la serie de un gráfico a partir de ciertos elementos seleccionados de un ListBox (ActiveX). Se trata pués de insertar en primer lugar un Cuadro de Lista (ListBox) de los controles ActiveX, configurándolo para que podamos realizar una selección múltiple de varios elementos.
Inicialmente aprenderemos la forma de saber cuántos elementos hemos seleccionado de este ListBox que alimentaremos con la propiedad ListfillRange con unas celdas de nuestra hoja de cálculo de Excel. Como no existe ninguna propiedad para este Control ListBox, que permita averigüar el número de elementos marcados, tendremos que generar un contador que evalúe si cada elemento del LisBox ,ncuentra o no seleccionados, lo que conseguiremos con un Loop que recorra éstos. Estos cálculos se deberán ejecutar con un CommandButton.
Empecemos entonces viendo cuál es el origen de nuestros datos:
A continuación insertaremos desde Ficha Programador > Controles > Insertar > Controles ActiveX > Cuadro de Lista, al que cambiaremos las propiedades:
ListFillRange: A2:A11
Multiselect: 1-fmMultiSelectMulti
Tenemos ya un ListBox con elementos los valores del rango A2:A11, y con la propiedad de poder seleccionar al tiempo varios de ellos.
El siguiente paso es insertar un Botón de comando (ActiveX) - CommandButton, ya que es a este botón al que vamos a agregar la programación que nos permitirá contar, de momento, el número de elementos seleccionados.
Insertaremos en la Hoja1 (en la hoja donde se encuentre nuestro ListBox) del Explorador de proyectos del Editor de VBA el siguiente código, formando nuestra macro de Excel, con un evento click:
Al seleccionar algunos elementos del ListBox, y presionar el CommandButton, aparece el cuadro de mensaje (MsgBox) indicando cuántos elemenos se han seleccionado.
Con lo que concluímos la primera parte; fundamental conocer cuál es este valor, ya que posteriormente lo emplearemos para redimensionar nuestra Matriz-Array, que estará compuesta exclusivamente por los elementos seleccionados... pero esto en el siguiente post.
Inicialmente aprenderemos la forma de saber cuántos elementos hemos seleccionado de este ListBox que alimentaremos con la propiedad ListfillRange con unas celdas de nuestra hoja de cálculo de Excel. Como no existe ninguna propiedad para este Control ListBox, que permita averigüar el número de elementos marcados, tendremos que generar un contador que evalúe si cada elemento del LisBox ,ncuentra o no seleccionados, lo que conseguiremos con un Loop que recorra éstos. Estos cálculos se deberán ejecutar con un CommandButton.
Empecemos entonces viendo cuál es el origen de nuestros datos:
A continuación insertaremos desde Ficha Programador > Controles > Insertar > Controles ActiveX > Cuadro de Lista, al que cambiaremos las propiedades:
ListFillRange: A2:A11
Multiselect: 1-fmMultiSelectMulti
Tenemos ya un ListBox con elementos los valores del rango A2:A11, y con la propiedad de poder seleccionar al tiempo varios de ellos.
El siguiente paso es insertar un Botón de comando (ActiveX) - CommandButton, ya que es a este botón al que vamos a agregar la programación que nos permitirá contar, de momento, el número de elementos seleccionados.
Insertaremos en la Hoja1 (en la hoja donde se encuentre nuestro ListBox) del Explorador de proyectos del Editor de VBA el siguiente código, formando nuestra macro de Excel, con un evento click:
Private Sub CommandButton1_Click() Dim seleccionados As Integer 'recorremos cada elemento del ListBox For i = 0 To ListBox1.ListCount - 1 'verificamos si está o no seleccionado 'en caso afirmativo, acumulamos el contador If ListBox1.Selected(i) = True Then seleccionados = seleccionados + 1 End If Next i 'comprobamos que hay algún elemento seleccionado If seleccionados = 0 Then MsgBox "Debes marcar al menos un cliente" Exit Sub End If MsgBox "Número de elementos seleccionados: " & seleccionados End Sub
Al seleccionar algunos elementos del ListBox, y presionar el CommandButton, aparece el cuadro de mensaje (MsgBox) indicando cuántos elemenos se han seleccionado.
Con lo que concluímos la primera parte; fundamental conocer cuál es este valor, ya que posteriormente lo emplearemos para redimensionar nuestra Matriz-Array, que estará compuesta exclusivamente por los elementos seleccionados... pero esto en el siguiente post.
al llegar al cuadro de mensaje donde me indica el numero de filas seleccionadas me marca 1
ResponderEliminarHola como estás?,
Eliminarun gusto saludarte.
¿cuántos 'clientes' tienes marcados?
Saludos
Hola saludos y gracias por este ejemplo y me gustaria saber como hacer lo mismo pero que me sume la cantidades seleccionadas por ejemplo si seleccionara el campo importe. Gracias
ResponderEliminarHola Juan,
Eliminarecha un vistazo a:
http://excelforo.blogspot.com.es/2017/03/vba-Suma-Selectiva-Listbox-Excel.html
Saludos
Excelente aporte tantos que busque y puse en práctica pero el suyo fue el mejor lo felicito gracias por su ayuda
ResponderEliminar;-)
Eliminarmuchas gracias Faustino!!