Usar varias CheckBox en una macro de excel
He diseñado una macro en Excel para que se pueda filtrar información de una tabla a través de diferentes CheckBox. Concretamente se trata de filtrar la columna que contiene siete países, por lo que he habilitado siete CheckBox, uno por país. De esta manera el usuario haciendo clic en cada uno puede seleccionar los países que quiera y la tabla mostrara la información solo de esos países.
Aparentemente parece sencillo, pero el problema es que tengo que programar todas las posibles combinaciones de los check box, ademas teniendo en cuenta que el CheckBox puede ser True o False.
Para ello he utilizado en el caso de selecciones de 1 o 2 países, he utilizado la siguiente formulación como ejemplo:
If CheckBox1.Value = True Then
'Solo Spain y SouthAfrica seleccionados
If CheckBox1.Value = True And (CheckBox2.Value = True) And (CheckBox3.Value = False) And (CheckBox4.Value = False) And (CheckBox5.Value = False) And (CheckBox6.Value = False) And (CheckBox10.Value = False) Then
TablaDatos.AutoFilter Field:=71, Criteria1:="=South Africa", _
Operator:=xlOr, Criteria2:="=Spain"
End If
etc.....
Y para el caso de más de tres países he utilizado la formulación de autofiltro avanzado, teniendo que crear los diferentes rangos según la combinación de los países:
'Solo Spain y SouthAfica y Portugal seleccionados
If CheckBox1.Value = True And (CheckBox2.Value = True) And (CheckBox3.Value = True) And (CheckBox4.Value = False) And (CheckBox5.Value = False) And (CheckBox6.Value = False) And (CheckBox7.Value = False) Then
TablaDatos.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D1:D4"), Unique:=False
End If
Donde en el rando D1:D4 estaban los criterios de los países.
El problema esta en que tengo que programar 127 combinaciones por país, ya que cada click en cada CheckBox necesita una respuesta programada.
Mi pregunta es: ¿Se puede hacer esto de otra manera más sencilla?
Aparentemente parece sencillo, pero el problema es que tengo que programar todas las posibles combinaciones de los check box, ademas teniendo en cuenta que el CheckBox puede ser True o False.
Para ello he utilizado en el caso de selecciones de 1 o 2 países, he utilizado la siguiente formulación como ejemplo:
If CheckBox1.Value = True Then
'Solo Spain y SouthAfrica seleccionados
If CheckBox1.Value = True And (CheckBox2.Value = True) And (CheckBox3.Value = False) And (CheckBox4.Value = False) And (CheckBox5.Value = False) And (CheckBox6.Value = False) And (CheckBox10.Value = False) Then
TablaDatos.AutoFilter Field:=71, Criteria1:="=South Africa", _
Operator:=xlOr, Criteria2:="=Spain"
End If
etc.....
Y para el caso de más de tres países he utilizado la formulación de autofiltro avanzado, teniendo que crear los diferentes rangos según la combinación de los países:
'Solo Spain y SouthAfica y Portugal seleccionados
If CheckBox1.Value = True And (CheckBox2.Value = True) And (CheckBox3.Value = True) And (CheckBox4.Value = False) And (CheckBox5.Value = False) And (CheckBox6.Value = False) And (CheckBox7.Value = False) Then
TablaDatos.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("D1:D4"), Unique:=False
End If
Donde en el rando D1:D4 estaban los criterios de los países.
El problema esta en que tengo que programar 127 combinaciones por país, ya que cada click en cada CheckBox necesita una respuesta programada.
Mi pregunta es: ¿Se puede hacer esto de otra manera más sencilla?
2 respuestas
Respuesta de Roberto Alvarado
1
Respuesta
1