How can I hide/show columns and rows in another sheet ("Project Plan") within the same workbook using a checkbox? If the checkbox is checked, they should not be hidden. If the checkbox is not checked, they should be hidden. The checkboxes are in an own sheet ("Guidelines"). I tried the following but get the error "Run time error '424': Object required'"
Sub Team_Availability_Click()
Dim rng As Range
Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")
If Team_Availability.Value = False Then
rng.Hidden = True
ElseIf Team_Availability.Value = True Then
rng.Hidden = False
End If
End Sub
Alternatively, I tried out this way, found in a similar question using some kind of object:
Checking if a worksheet-based checkbox is checked
Sub Team_Availability_Click()
Dim rng As Range
Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")
If ThisWorkbook.Worksheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = 0 Then
rng.Hidden = True
ElseIf ThisWorkbook.Worksheets("Guidelines").OLEFormat.Object.Value = 1 Then
rng.Hidden = False
End If
End Sub
Here I get the error
The Item with the specified name wasn't found.
I did not introduce the dim/set I guess. Now, this is the newest version:
Now I get the error in in line Set cb = ActiveSheet...
saying
The item with the specified name wasn't found.
Sub Team_Availability_Click()
Dim cb As Shape
Dim rng As Range
Set cb = ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability")
Set rng = ThisWorkbook.Sheets("Project Plan").Rows("5:8")
If ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = -4146 Then
rng.Hidden = True
ElseIf ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability").OLEFormat.Object.Value = 1 Then
rng.Hidden = False
End If
End Sub
Team_Availability
does not exist inActiveSheet
. Avoid usingActiveSheet
instead access your sheet by nameThisWorkbook.Worksheets("SheetName")
which is much more reliable. Then check your shape name if it really is exactlyTeam_Availability
and doesn't have typos. Also make sure it is a FormControl and not an ActiveX Control (see What is the difference between “Form Controls” and “ActiveX Control” in Excel 2010?) – Pᴇʜ1
as value but a non-checked returns-4146
and not0
as you assume. – PᴇʜGuidelines
add a Form Control CheckBox name itTeam_Availability
and runSet cb = ThisWorkbook.Sheets("Guidelines").Shapes("Team_Availability")
this works with no error. You must be doing something wrong in that process. The code looks good. Check it out on a new workbook. The issue must be somewhere else or a typo (or additional space) somwhere. – Pᴇʜ