Combinar varios Checkbox para realizar criterio de búsqueda con una macro
publicado
Hola a todos y gracias por vuestra ayuda de antemano.
Me he encontrado con un problema que no sé muy bien como resolver,
espero que alguien me pueda hechar una mano,
porque ya le he dado mil vueltas y estoy atascado, la verdad.
Gracias.
Sub buscar()
'Caso 1, compara fila por fila en el rango C1:C100
'Si en una fila encuentra el valor 1 y además el CheckBox1 está marcado escribe ok en F1
'Pero esta condición solo se ejecuta si el CheckBox1 está activado
'Si quiero recorrer todo el rango y escribir ok en cada acierto:
'Worksheets("Hoja1").Range("f" & i).Value = "ok"
Dim i As Integer
For i = 1 To 100
If Worksheets("Hoja1").Range("c" & i).Value = 1 _
And Worksheets("Hoja1").CheckBox1.Value = True Then
Worksheets("Hoja1").Range("f1").Value = "ok"
End If
Next i
End Sub
Sub buscar2()
'Caso 2, compara todos los Checkbox con en el rango C1:C100
'Ejemplo caso 1: si Ai = 1 y CheckBoxi = True entonces se escribe ok en Fi
'Ejemplo caso 2: si A1 y A3 = 1 y CheckBox1 y CheckBox3 = True entonces se escribe ok en G14
'El problema en el caso 1 es que no puedo asignarle i al nombre del CheckBox
'Y en el caso 2 tampoco sé como crear las distintas combinaciones entre cada una de las filas
'comprendidas en el rango C1:C100 con sus respectivos CheckBox
'sin escribir un millón de if
'Problema 1 con el caso 1
Dim i As Integer
For i = 1 To 100
If Worksheets("Hoja1").Range("c" & i).Value = 1 _
And Worksheets("Hoja1").CheckBox(i).Value = True Then
Worksheets("Hoja1").Range("f" & i).Value = "ok"
End If
Next i
'Problema 2 con el caso 2
If Worksheets("Hoja1").Range("c1").Value = 1 _
And Worksheets("Hoja1").CheckBox1.Value = True _
And Worksheets("Hoja1").Range("c2").Value = 1 _
And Worksheets("Hoja1").CheckBox2.Value = True Then
Worksheets("Hoja1").Range("G14").Value = "ok"
End If
If Worksheets("Hoja1").Range("c1").Value = 1 _
And Worksheets("Hoja1").CheckBox1.Value = True _
And Worksheets("Hoja1").Range("c3").Value = 1 _
And Worksheets("Hoja1").CheckBox3.Value = True Then
Worksheets("Hoja1").Range("G14").Value = "ok"
End If
'CheckBox1 + CheckBox50, CheckBox14 + CheckBox25, CheckBox1 + CheckBox1 + CheckBox2 + CheckBox3 + CheckBox15 + CheckBox50 ....etc
End Sub
Hola a todos y gracias por vuestra ayuda de antemano.
Me he encontrado con un problema que no sé muy bien como resolver,
espero que alguien me pueda hechar una mano,
porque ya le he dado mil vueltas y estoy atascado, la verdad.
Gracias.
Sub buscar() 'Caso 1, compara fila por fila en el rango C1:C100 'Si en una fila encuentra el valor 1 y además el CheckBox1 está marcado escribe ok en F1 'Pero esta condición solo se ejecuta si el CheckBox1 está activado 'Si quiero recorrer todo el rango y escribir ok en cada acierto: 'Worksheets("Hoja1").Range("f" & i).Value = "ok" Dim i As Integer For i = 1 To 100 If Worksheets("Hoja1").Range("c" & i).Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True Then Worksheets("Hoja1").Range("f1").Value = "ok" End If Next i End Sub Sub buscar2() 'Caso 2, compara todos los Checkbox con en el rango C1:C100 'Ejemplo caso 1: si Ai = 1 y CheckBoxi = True entonces se escribe ok en Fi 'Ejemplo caso 2: si A1 y A3 = 1 y CheckBox1 y CheckBox3 = True entonces se escribe ok en G14 'El problema en el caso 1 es que no puedo asignarle i al nombre del CheckBox 'Y en el caso 2 tampoco sé como crear las distintas combinaciones entre cada una de las filas 'comprendidas en el rango C1:C100 con sus respectivos CheckBox 'sin escribir un millón de if 'Problema 1 con el caso 1 Dim i As Integer For i = 1 To 100 If Worksheets("Hoja1").Range("c" & i).Value = 1 _ And Worksheets("Hoja1").CheckBox(i).Value = True Then Worksheets("Hoja1").Range("f" & i).Value = "ok" End If Next i 'Problema 2 con el caso 2 If Worksheets("Hoja1").Range("c1").Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True _ And Worksheets("Hoja1").Range("c2").Value = 1 _ And Worksheets("Hoja1").CheckBox2.Value = True Then Worksheets("Hoja1").Range("G14").Value = "ok" End If If Worksheets("Hoja1").Range("c1").Value = 1 _ And Worksheets("Hoja1").CheckBox1.Value = True _ And Worksheets("Hoja1").Range("c3").Value = 1 _ And Worksheets("Hoja1").CheckBox3.Value = True Then Worksheets("Hoja1").Range("G14").Value = "ok" End If 'CheckBox1 + CheckBox50, CheckBox14 + CheckBox25, CheckBox1 + CheckBox1 + CheckBox2 + CheckBox3 + CheckBox15 + CheckBox50 ....etc End Sub
demo.xlsm