Excel - EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

 
Vista:
sin imagen de perfil
Val: 19
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por TOMMY (6 intervenciones) el 18/08/2019 20:06:53
Buenas tardes Estimados,

Estoy intentando evaluar con codigo vba si el tipo de control es de tipo checkbox y está habilitado, pero con el codigo que tengo no he podido. Aquí se los dejo haber si me pueden ayudar. Las gracias de antemano.

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
28
29
30
Sub evaluarCheckBox()
Application.ScreenUpdating = False
 
 
Dim controles As control
Dim checkDes As Boolean
 
 
For Each controles In NOMBRE_FORMULARIO.Controls
 
If TypeOf controles Is MSForms.CheckBox And controles.Enabled = False Then
 
checkDes = False
 
Else
checkDes = True
 
End If
 
Next controles
 
If checkDes = False Then
MsgBox "SELECCIONA UN DATO"
 
Else
Exit Sub
 
End If
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Antoni Masana
Val: 3.841
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por Antoni Masana (1295 intervenciones) el 19/08/2019 09:54:31
Hay partes del código que son cuestionables:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub evaluarCheckBox()
    Dim controles As control
    Dim checkDes As Boolean
 
    Application.ScreenUpdating = False
 
    For Each controles In NOMBRE_FORMULARIO.Controls
        If TypeOf controles Is MSForms.CheckBox And controles.Enabled = False Then
            checkDes = False
        Else
            checkDes = True
        End If
    Next controles
 
    If checkDes = False Then
        MsgBox "SELECCIONA UN DATO"
    Else
        Exit Sub
    End If
End Sub

La primera que me ha llamado la atención es le Else Exit Sub esto i nada es lo mismo.

No se cuantos controles CheckBox tienes, 1 o varios, si es uno el código debería funcionar. Si son varios no es posible saber si hay alguno que no esté habilitado.

Te pongo el código con algunos cambios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub evaluarCheckBox()
    Dim CheckBox_Total as Integer, _
        CheckBox_Habil as Integer, controles As control
 
    Application.ScreenUpdating = False
 
    For Each controles In NOMBRE_FORMULARIO.Controls
        If TypeOf controles Is MSForms.CheckBox Then
                                      CheckBox_Total = CheckBox_Total + 1
           IF controles.Enabled Then  CheckBox_Habil = CheckBox_Habil + 1
        End If
    Next Controles
 
    If CheckBox_Total <> CheckBox_Habil Then MsgBox "SELECCIONA UN DATO"
 
    Application.ScreenUpdating = True
End Sub

Cuenta cuantos CheckBox tienes y cuantos están habilitados, si las dos cuentas son diferentes quiere decir que tienes CheckBox deshabilitados y es igual si hay un o mil, siempre funciona.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 19
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por Tommy (6 intervenciones) el 20/08/2019 05:38:43
Que tal, Antoni, hice las correcciones que enviaste pero a un no funciona, no se si el código no está leyendo la propiedad Enabled, ya que cuando escribo la variable controles y luego el punto en el asistente que se despliega no me muestra la propiedad.
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: 3.841
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por Antoni Masana amasana@hotmail.com (1295 intervenciones) el 20/08/2019 06:14:42
Modifique la parte de contabilizar, el resto no se si es correcto y sin ver que esta leyendo no puedo saber que es lo que falla.

Tengo dudas sobre el primer IF y debo probarlo in situ porque no puedo simular el error sin saber cual es.

Sube el libro o puedes enviarlo a mi dirección de correo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antoni Masana
Val: 3.841
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por Antoni Masana amasana@hotmail.com (1295 intervenciones) el 20/08/2019 13:04:29
Me tenía intrigado tu problema, además de estar aburrido.

Tal cual esta el codigo detecta los CheckBox y los OptionButton.
Con el IF adicional ahora solo los CheckBox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton1_Click()
    Dim CheckBox_Total As Integer, _
        CheckBox_Habil As Integer, controles As Control
 
    Application.ScreenUpdating = False
 
    For Each controles In Menu.Controls
        If TypeOf controles Is MSForms.CheckBox Then
            If controles.DisplayStyle = fmDisplayStyleCheckBox Then
                                          CheckBox_Total = CheckBox_Total + 1
                If controles.Enabled Then CheckBox_Habil = CheckBox_Habil + 1
            End If
        End If
    Next controles
 
    If CheckBox_Total <> CheckBox_Habil Then MsgBox "SELECCIONA UN DATO"
 
    Application.ScreenUpdating = True
End Sub

Ahora una pregunta:

¿Que el CheckBox esté "habilitado" como indicas en el anunciado es es que este habíl, que tienes acceso a él, es decir que lo puedas marcar y desmarcar? y en ese caso ¿Quien lo habilita?

Si lo que quieres es saber si hay alguno marcado, es decir que hay la marca en la casilla, (ejemplo [X]) la forma cambia un poco y este seria el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton1_Click()
    Dim CheckBox_Valor As Integer, controles As Control
 
    Application.ScreenUpdating = False
 
    For Each controles In Menu.Controls
        If TypeOf controles Is MSForms.CheckBox Then
            If controles.DisplayStyle = fmDisplayStyleCheckBox Then
                If controles.Value Then CheckBox_Valor = CheckBox_Valor + 1
            End If
        End If
    Next controles
 
    If CheckBox_Valor = 0 Then MsgBox "SELECCIONA UN DATO"
 
    Application.ScreenUpdating = True
End Sub


Y si esto o resuelve tu problema enviame el fichero.


Saludos
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 19
Ha disminuido su posición en 4 puestos en Excel (en relación al último mes)
Gráfica de Excel

EVALUAR CHECKBOX HABILITADOS EN VBA EXCEL

Publicado por Tommy (6 intervenciones) el 22/08/2019 01:23:20
Hola Antoni,

Te envié un correo a tu cuenta de hotmail con el fichero y un mensaje donde intento explicarme, no se si era ahí que debí enviarte el fichero, disculpa de antemano.

Gracias por tu ayuda.
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