Continuando con el post anterior, en el que vimos cómo contar el número de elementos seleccionados en un ListBox, hoy veremos como identificar estos elementos; lo que haremos añadiéndolos a una Matriz-Array.
El trabajo consistirá en Redimensionar nuestra matriz de acuedo al número de elementos seleccionados, para luego recorrer todos los elementos del ListBox, comprobando cuáles están Seleccionados, en este caso, lo añadiremos como item de nuestra matriz-Array redimenensionada.
A continuación del código de la entrada anterior ,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, quedando:
Con este código hemos creado una matriz con los elementos seleccionados en el ListBox; con estos item de dicha matriz, posteriormente (en el post siguiente) formatearemos la serie de datos de nuestro gráfico, dando un color distinto a los Puntos coincidentes con los seleccionados.
El próximo y último post, incluiremos la última parte del código de VBA para Excel que recorrera los puntos que compornen la serie, hasta encontrar los ocincidentes con los item seleccionados...
El trabajo consistirá en Redimensionar nuestra matriz de acuedo al número de elementos seleccionados, para luego recorrer todos los elementos del ListBox, comprobando cuáles están Seleccionados, en este caso, lo añadiremos como item de nuestra matriz-Array redimenensionada.
A continuación del código de la entrada anterior ,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, quedando:
Private Sub CommandButton1_Click() Dim lItem As Long, seleccionados As Integer Dim MiMatriz() As Variant '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 'redefinimos la matriz con el número de items seleccionados ReDim MiMatriz(1 To seleccionados, 1) As Variant x = 1 'recorremos todos los elementos del Listbox For lItem = 0 To ListBox1.ListCount - 1 'en caso de que el elemento esté seleccionado 'lo añadimos a una matriz 'que luego emplearemos para comparar en el gráfico If ListBox1.Selected(lItem) = True Then 'añadimos el item a la matriz redimensionada MiMatriz(x, 1) = ListBox1.List(lItem) 'dejamos el Listbox sin selección ListBox1.Selected(lItem) = False x = x + 1 End If Next lItem End Sub
Con este código hemos creado una matriz con los elementos seleccionados en el ListBox; con estos item de dicha matriz, posteriormente (en el post siguiente) formatearemos la serie de datos de nuestro gráfico, dando un color distinto a los Puntos coincidentes con los seleccionados.
El próximo y último post, incluiremos la última parte del código de VBA para Excel que recorrera los puntos que compornen la serie, hasta encontrar los ocincidentes con los item seleccionados...
Los felicito por tratar de ser lo más claro posible, especialmente por el hecho de ir explicando lo que hacen las líneas de código, es muy util para analizar y reutilizar código similar
ResponderEliminarMuchas gracias!
Eliminarla idea es enseñar... asi que no hay mejor forma que ir explicando cada línea.
me alegra te sirva para atacar otros problemas similares.
Un saludo
hola tengo una pequeña duda
ResponderEliminartengo un useform y tengo el boton de salir y quiero que me de la opcion de Si o No pero cuando le doy a No se me sale de todas maneras cual es la linea de codigo correcta para que cuando yo le diga que No me deje en el formulario
Hola,
Eliminarpor lo que entiendo al presionar el botón de Salida de un Useform, te aparece otro UserForm 'secundario' con dos nuevos botones (un SI y un NO), supongo que al presionar el SI descargas los formularios o sales a la hoja de cálculo (o similar); si quieres que al presionar el NO, quede activo el UserForm principal o visible, yo asociaría al NO
Userform1.Show
Espero te oriente.
Slds
hola
ResponderEliminarMsgBox "¿Esta seguro que desea salir?", vbYesNo, "Formulario", esto es lo que tengo
y como lo relaciono no manejo mucho VB6
Saludos
Hola...
Eliminardeberías tener un línea asociando una variable al MsgBox
pregunta=MsgBox "¿Esta seguro que desea salir?", vbYesNo, "Formulario"
y a continuación evalúas la respuesta
if pregunta =vbYes then Exit Sub
if pregunta =vbNo then Userfom1.Show
pero con las condiciones que hayas puesto.
Slds
Buenos días,
ResponderEliminarSi quisiera enviar un correo via outlook a cada uno de los seleccionados, teniendo en cuenta que los correos estan en la columna E, osea la columna 5, como seria?
de antemano muchas gracias
mi correo: gonzalez.jhonatan@gmail.com
Hola Jhonatan,
Eliminarprocuraré subir una explicación al respecto en cuanto me sea posible.
Saludos
Estimado:
ResponderEliminarMuy buena guía para ir avanzando en la comprensión de los códigos de macros.
Una consulta ¿Cual sería el codigo? para que una vez seleccionado un item del listbox, se despliegue un userform con datos especificos del item seleccionado
Hola Jorge,
Eliminarla cuestión es ¿cuál es la regla para completar el UserForm a partir de los elementos seleccionados?, ¿cuántos elementos deben marcarse y cuantos y qué tipo de controles tienes en el Useform?...
En función a las respuestas podrías modificar la línea 28 del código para rellenar los controles del userform, por ejemplo
userform1.textbox1.value= ListBox1.List(lItem)
...
Saludos
buenas noches, excelente codigo, quisiera saber como hago hago para borrar los datos sellecinados en el listbox ya que cuando los borro la primera vez, se borran bn, pero cuando voy a seguir borrando los items que quedaron no los borra completos, me toca borralos uno por uno.
ResponderEliminarde ante mano muchas gracias y excelente labor la que haces.
cordial saludo.
Hola Juan Camilo,
Eliminarsupongo que quieres eliminar los registros en la hoja de cálculo a partir de los elemento seleccionados...
El asunto es delicado, ya que para eliminar filas correctamente en la hoja de cálculo hay que realizar un recorrido inverso desde la fila inferior.
Si vas de uno en uno tendrás que refrescar constantemente el ListBox para tener actualizado la fila correcta en cada momento
En todo caso, procuraré subir un post al blog en cuanto me sea posible
Un saludo
Este comentario ha sido eliminado por el autor.
Eliminarhola Ismael gracias por responder, solo quiero borrarlos del listbox, este listbox es de venta, cuando borro los datos seleccionados ellos se borran correctamente, pero si selecciono los datos restantes para borrarlos no se borran todos, se van borrando por mitad, si son 8 datos y los borro todos solo se borran 4, luego selecciono esos 4 y se borran 2 y luego 1.
ResponderEliminarcordial saludo.