Hallo zusammen,
ich habe angefangen mich mit VBAs und Co auseinander zusetzen und bin leider sehr schnell an meine Grenzen gekommen.
Ich möchte ein VBA erstellen der immer auf dem gesammten Blatt prüft ob eine Änderung an Checkboxen vorgenommen wurde und prüft ob die Checkbox ausgewählt wurde oder nicht.
Sollte die Checkbox nicht ausgewählt worden sein,
sollen alle Spalten unter der in der sich die Checkbox befindet,
bis zur nächsten Spalte in der sich eine Checkbox befindet, ausgeblendet werden.
Sollte die Checkbox ausgefüllt sein sollen die Spalten bis zur nächsten Spalte in der sich eine Checkbox befindet eingeblendet werden.
Da ich selber mittlerweile nicht weiterkomme habe ich Chat GPT gefragt und es wurden mir zwei VBAs vorgeschlagen.
Aber leider bekomme ich keins von beiden zum laufen.
Könnte mir vielleich einer von euch weiterhelfen bzw. hätte eine Idee wie man das ganze umsetzen könnte?
Danke im vor raus und Grüße
Roman
------------------------------------------------------------------------------------------------------
Sub CheckboxPrüfung()
Dim cb As CheckBox
Dim ws As Worksheet
Dim i As Integer
Dim hideRows As Boolean
Set ws = ThisWorkbook.Sheets("Overview")
For Each cb In ws.CheckBoxes
If cb.Value = 1 Then
hideRows = False
Else
hideRows = True
End If
i = cb.TopLeftCell.Row + 1
Do While i <= ws.Cells(ws.Rows.Count, cb.TopLeftCell.Column).End(xlUp).Row
If ws.Cells(i, cb.TopLeftCell.Column).Value <> "" Then
If TypeOf ws.Cells(i, cb.TopLeftCell.Column).Value Is CheckBox Then
Exit Do
End If
If hideRows Then
ws.Rows(i).EntireRow.Hidden = True
Else
ws.Rows(i).EntireRow.Hidden = False
End If
End If
i = i + 1
Loop
Next cb
End Sub
-------------------------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chkBox As CheckBox
Dim rng As Range
Dim col As Integer
Application.EnableEvents = False
For Each chkBox In Me.CheckBoxes
If Not Intersect(Target, chkBox.TopLeftCell) Is Nothing Then
col = chkBox.TopLeftCell.Column
Set rng = Me.Columns(col)
If chkBox.Value = xlOff Then
Do Until IsEmpty(Me.Cells(1, col + 1)) Or Me.Cells(1, col + 1).Value Like "*Checkbox*"
Me.Columns(col + 1).Hidden = True
col = col + 1
Loop
Else
Do Until IsEmpty(Me.Cells(1, col + 1)) Or Me.Cells(1, col + 1).Value Like "*Checkbox*"
Me.Columns(col + 1).Hidden = False
col = col + 1
Loop
End If
Exit For
End If
Next chkBox
Application.EnableEvents = True
End Sub
---------------------------------------------------------------------------------------------------------------------------
|