Hieronder een macro die ervoor zorgt dat checkboxes automatisch worden aan- en afgevinkt, afhankelijk van het feit of er in de betreffende rij(en) 1 of meer cellen wel of niet aan de ingestelde voorwaarden voldoen. Ik ben uitgegaan van de afbeelding die je hier plaatste op 27-03-2022. Daarom:
- moeten de gegevens beginnen in Blad1 in rij 3;
- elke rij kan gegevens bevatten in de kolommen A:P (16 cellen per kolom);
- en de 'marge' die je bij de waarden 180 en 360 wil hanteren plaats je in A1.
- Als test ben ik uitgegaan van slechts 5 rijen met gegevens (rij 3 t/m 7), welk bereik eenvoudig is uit te breiden tot de 120 rijen die je uiteindelijk wil gebruiken.
- In kolom Q moet je eerst 5 checkboxen plaatsen in Q3 t/m Q7, checkboxes uit de lijst Active-x-besturingselementen. Als je die checkboxes plaatst, krijgen ze automatisch de namen Checkbox1 t/m Checkbox5 (die namen móeten ze ook hebben, anders werkt de macro niet).
- Wil je dat naast wel/geen vinkje in de checkboxes ook nog 'waar' of onwaar' wordt weergegeven, link dan elke checkbox aan de naastliggende cel (Checkbox1 in Q3, link je dus aan cel R3, Checkbox2 in Q4 aan cel R4, enz.)
- Als je bovenstaande hebt gedaan en in de rijen 3 t/m 7 een aantal gegevens hebt ingevoerd, plaats pas dan onderstaande macro in het vba-blad behorend bij Blad1 (rechtsklik op de tab van Blad1, kies "Programmacode weergeven", dubbelklik aan de linkerkant op "Blad1", plaats aan de rechterkant onderstaande macro, en sluit het venster door op het kruisje rechtsboven te klikken).
- Als je nu in de rijen 3 t/m7 wat wijzigt, zul je het effect daarvan aan de chexkboxes in kolom Q en aan de waarden in kolom R kunnen waarnemen.
In mijn bericht van 28-03-2022 heb ik ook en oplossing met voorw. opmaak beschreven (ik vermoed dat je die nog niet getest hebt). Als je die voorw. opmaak ook nog instelt (die werkt onafhankelijk van macro), dan heb je alle oplossingen (3) die je wilde.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A3:Q7"), Target) Is Nothing Then
Application.ScreenUpdating = False
Dim a As Long, b As Long, c As Long, d As Long, e As Long, f As Long
Dim g As Integer, h As Integer, i As Integer
Dim r As Integer, myrange As Range
a = 180 - Range("A1").Value: b = 180 + Range("A1").Value
c = 360 - Range("A1").Value: d = 360 + Range("A1").Value
e = -Range("A1").Value: f = Range("A1").Value
For r = 3 To 7
Set myrange = Range("A" & r & ":Q" & r)
g = WorksheetFunction.CountIfs(myrange, ">=" & a, myrange, "<=" & b)
h = WorksheetFunction.CountIfs(myrange, ">=" & c, myrange, "<=" & d)
i = WorksheetFunction.CountIfs(myrange, ">=" & e, myrange, "<=" & f)
With OLEObjects("Checkbox" & r - 2).Object
.Value = False
If WorksheetFunction.Or(g > 0, h > 0, i > 0) Then
.Value = True
End If
End With
Next r
Application.ScreenUpdating = True
End If
End Sub