'Sub die de onaction van een checkbox afhandelt
Sub checkboxHdlr(checkboxId As String)
'Controleer of checkbox gechecked is.
Dim cb As Object
Dim ws As Worksheet
Dim dataWs As Worksheet
Dim dataWsName As String
Dim cbNumber As Integer
Dim WrdArray() As String
Dim prijsKolom As Integer
Dim naamKolom As Integer
Dim optelSheet As Worksheet
Dim optelSheetFirstClearRow As Integer
'Zet de active worksheet in een variabele
Set ws = ThisWorkbook.ActiveSheet
'Zet de checkbox in een variabele
Set cb = ws.Shapes(checkboxId).OLEFormat.Object
'Zet de optel sheet in een variabele
Set optelSheet = Sheets("OptelSheet")
'Zet de formule sheet in een variabele
Dim formuleSheet As Worksheet
Set formuleSheet = Sheets("Formules")
'Controleer of de cb aangevinkt wordt
If cb.value = 1 Then 'Aangevinkt = ja
'Haal het nummer van de checkbox uit de naam
WrdArray() = Split(checkboxId, "_")
cbNumber = WrdArray(1)
'Zet de data sheet in een variabele
dataWsName = ws.Name & " data"
Set dataWs = Sheets(dataWsName)
'Zoek naar de kolom waar de prijs in staat
prijsKolom = Application.WorksheetFunction.Match("Prijs", dataWs.Range("1:1"), 0)
'Zoek naar de kolom waar de optie naam in staat
If InStr(dataWsName, "Model") Then
'Doe dit voor de huis modellen
naamKolom = Application.WorksheetFunction.Match("Woning ", dataWs.Range("1:1"), 0)
Else
If InStr(dataWsName, "Installaties+duurzaamheid") Then
'doe dit voor de installaties en duurzaamheid
naamKolom = Application.WorksheetFunction.Match("Catagorie/optie", dataWs.Range("1:1"), 0)
Else
'Doe dit voor de overige opties
naamKolom = Application.WorksheetFunction.Match("Sub 1", dataWs.Range("1:1"), 0)
End If
End If
'Zet de eerste lege row van de optelsheet in een variabele
optelSheetFirstClearRow = findLastRow(optelSheet, "A") + 1
'Zoek de juiste row waar in alle data staat
Dim i As Integer
For i = 1 To findLastRow(dataWs, ConvertToLetter(prijsKolom))
'Controleer of de juiste optie gevonden is werkt nog niet
If dataWs.Cells(i, 1).value = cbNumber Then
'Zet de id van de optie in de optel sheet
optelSheet.Cells(optelSheetFirstClearRow, "A").value = checkboxId
'Zet de prijs van de optie in de optel sheet
optelSheet.Cells(optelSheetFirstClearRow, "B").value = dataWs.Cells(i, prijsKolom)
'Zet de naam van de optie in de optel sheet
optelSheet.Cells(optelSheetFirstClearRow, "C").value = dataWs.Cells(i, naamKolom)
If InStr(dataWsName, "PVE") Then
optelSheet.Cells(optelSheetFirstClearRow, "D").value = dataWs.Cells(i, Application.WorksheetFunction.Match("Catagorie/optie", dataWs.Range("1:1"), 0))
End If
'Doe dit alleen voor de model sheet
If (ws.Name = "Model") Then
'Zet de prijs van het model in het formule blad voor het berekenen van de vergroot of verklein prijs
formuleSheet.Cells(2, 9) = dataWs.Cells(i, prijsKolom)
'Zet de m3 van het model in het formule blad voor het berekenen van de vergroot of verklein prijs
formuleSheet.Cells(4, 9) = dataWs.Cells(i, 4)
'Zet de ruimtes van het model in het formule blad
formuleSheet.Cells(7, 13) = ((dataWs.Cells(i, 5) - dataWs.Cells(i, 6)) - dataWs.Cells(i, 7))
'Zet de badkamers van het model in het formule blad
formuleSheet.Cells(8, 13) = dataWs.Cells(i, 6)
'Zet de toiletten van het model in het formule blad
formuleSheet.Cells(9, 13) = dataWs.Cells(i, 7)
'Zet het aantal m3 van het model in de verkoop sheet
ws.Cells(14, 7) = dataWs.Cells(i, 4)
End If
'Break de loop
Exit For
End If
Next i
Else 'Aangevinkt = nee
'Kijk of de optie al in de optel sheet staat.
For i = 1 To findLastRow(optelSheet, "A")
If optelSheet.Cells(i, 1) = checkboxId Then
'Wanneer de optie wordt gevonden, verwijder deze
'Delete de hele row
optelSheet.Rows(i).EntireRow.Delete
'Break de loop
Exit For
End If
Next i
End If
End Sub