Excel - Ayuda con ListBox en Excel

 
Vista:
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con ListBox en Excel

Publicado por Antoni Masana (2574 intervenciones) el 27/07/2025 17:08:59
Ayuda con ListBox en Excel

En un Excel tengo un formulario con los siguientes objetos entre otros:

1 ListBox: donde tengo los datos con el parámetro MultiSelect activado.
2 OptionButton: Que marcan la condición del filtro.
2 CheckBox: Marca en el ListBox según la opción marcada en el OptionButton.

Funcionamiento:

OptionButton1
• Desmarca todo el ListBox
• Activa CheckBox1
• Descativa CheckBox2

OptionButton2
• Desmarca todo el ListBox
• Desactiva CheckBox1
• Activa CheckBox2

CheckBox1
• Marca todos los que el campo 3 está vacío.

CheckBox2
• Marca todos los que el campo 3 está lleno.

Hasta aquí todo bien.


Ahora resulta que el usuario puede ir al ListBox y marcar/desmarcar a su gusto.
Para ello creo dos eventos del ListBox:
* ListBox1_Change()
* ListBox1_Enter()

Que llaman a un procedimiento ListBox1_MARCAR que comprueba si lo marcado es correcto o no.

El código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 ' </> ----------------------------------------------------------
' </> ---&--- ListBox1
' </> ----------------------------------------------------------
 
Private Sub ListBox1_Change()
    Call ListBox1_MARCAR
End Sub
 
Private Sub ListBox1_Enter()
    Call ListBox1_MARCAR
End Sub
 
Private Sub ListBox1_MARCAR()
    If OptionButton1.Value Then
        Pun = ListBox1.ListIndex
        If ListBox1.List(Pun, 3) <> Empty Then
            ListBox1.Selected(Pun) = False
        End If
    End If
 
    If OptionButton2.Value Then
        Pun = ListBox1.ListIndex
        If ListBox1.List(Pun, 3) = Empty Then
            ListBox1.Selected(Pun) = False
        End If
    End If
End Sub

PROBLEMA 1



No se cual de los dos eventos es el que debo usar.

PROBLEMA 2



Al desactivar la opción incorrecta del ListBox se vuelve a ejecutar el evento Change y entra en un circulo infinito.
Como no se me ocurre otra opción lo he solucionado con una variable pública.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub ListBox1_MARCAR()
    If SW_Saltar Then Exit Sub
 
    If OptionButton1.Value Then
        Pun = ListBox1.ListIndex
        If ListBox1.List(Pun, 3) <> Empty Then
            SW_Saltar = True: ListBox1.Selected(Pun) = False
            SW_Saltar = False
        End If
    End If
 
    If OptionButton2.Value Then
        Pun = ListBox1.ListIndex
        If ListBox1.List(Pun, 3) = Empty Then
            SW_Saltar = True: ListBox1.Selected(Pun) = False
            SW_Saltar = False
        End If
    End If
End Sub

PROBLEMA 3



Resulta que si se mueve el ratón por el ListBox con el botón izquierdo pulsado va marcando o seleccionando todos los registros y los eventos Change y Enter parece que no se ejecutan o no tienen el efecto de corregir.

PROBLEMA 4



Cuando se ejecutan los CheckBox se activa el evento Change y no es necesario ¿Cómo lo evito?

Alguna solución a estos problemas
Gracias

Saludos
\\//_
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo

Ayuda con ListBox en Excel

Publicado por Leonardo (4 intervenciones) el 23/10/2025 20:42:52
Si el problema es que se ejecuta infinitamente el Evento, declara una variable de tipo Boolean en el formualrio (Por ej: Modificando) y en Initialize le asignas un valor FALSE.

Cuando entres al evento que produce el loop infinito, consulta si MODIFICANDO es TRUE, en cuyo caso ejecuta un Exit Sub.
En la línea siguiente, asigna MODIFICANDO=TRUE y al final de todo el proceso (antes del END SUB) asigna MODIFICANDO=FALSE

Espero que resuleva tu problema. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Ayuda con ListBox en Excel

Publicado por Antoni Masana (2574 intervenciones) el 23/10/2025 22:16:09
Gracias.
Lo probare y te cuento.

Saludos,
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar