VBA - 如果未选中复选框,则隐藏工作簿的每个工作表中的某些列

时间:2017-12-03 23:22:25

标签: excel vba excel-vba

当我的用户表单中没有选中某个复选框时,我试图隐藏工作簿中的每个“A”列。

我的工作簿中有6个工作表。

我有6个复选框。

如果未选中复选框,我想隐藏与其关联的列。

例如:如果未选中“建议”复选框,我想隐藏工作簿中每个工作表中的“A”列。

谢谢!

我试过了:

shtFinancial.Range("D").EntireColumn.Hidden = Not cbAdvice.Value

而且:

If cbAdvice.Value = True Then
shtFinancial.Range("D").EntireColumn.Hidden

2 个答案:

答案 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)

enter image description here

我创建了两个有效的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