当我的用户表单中没有选中某个复选框时,我试图隐藏工作簿中的每个“A”列。
我的工作簿中有6个工作表。
我有6个复选框。
如果未选中复选框,我想隐藏与其关联的列。
例如:如果未选中“建议”复选框,我想隐藏工作簿中每个工作表中的“A”列。
谢谢!
我试过了:
shtFinancial.Range("D").EntireColumn.Hidden = Not cbAdvice.Value
而且:
If cbAdvice.Value = True Then
shtFinancial.Range("D").EntireColumn.Hidden
答案 0 :(得分:0)
VBA中的复选框非常时髦。这是一种方法:
Sub cbAdvice_Click()
Dim CheckBox As Shape, ws As Worksheet
Set CheckBox = Sheet1.Shapes("cbAdvice")
For Each ws In ActiveWorkbook.Worksheets
If CheckBox.OLEFormat.Object.Value = 1 Then
ws.Columns("A:A").EntireColumn.Hidden = False
Else
ws.Columns("A:A").EntireColumn.Hidden = True
End If
Next ws
End Sub
答案 1 :(得分:0)
我创建了两个有效的x控制盒" CheckboxColA"和" CheckboxColB"并给了他们以下代码来改变状态:
Sheet1("工作表控件")
Private Sub CheckboxColA_Change()
Call changeColAVisiblity(CheckboxColA.Value, "A")
End Sub
Private Sub CheckBoxColB_Change()
Call changeColAVisiblity(CheckBoxColB.Value, "B")
End Sub
然后在" module1"
中创建以下代码Sub changeColAVisiblity( _
cbState As Boolean, _
changeColumn As String)
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
'If statement Assumes sheet with contols should not change
If ws.Name <> "CheckBox Controls" Then
ws.Columns(changeColumn).Hidden = cbState
End If
Next
End Sub