Excel:有条件地显示单元格

时间:2016-08-24 18:46:57

标签: excel conditional

我正在尝试生成具有动态条件显示的用户输入表单。换句话说,当表单首次打开时,我希望某些单元格不显示,然后我希望它们在用户开始输入数据时显示或不显示。这是我现在拥有的:

enter image description here

根据用户是否从C3中的框中选择“天”或“小时”,我希望隐藏第6到8行。同样,如果用户选择“小时”,则应隐藏第9行到第11行。这是我到目前为止写的:

PivotCache

这不起作用。即使它确实如此,我认为这将要求用户每次打开此工作簿时都必须手动运行此宏,这是需要避免的。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

将此代码放在工作簿附带的模块中

Sub ConditionalDisplay()
    With Worksheets("Calculator")
        IF .Range("C3") <> "Days" And .Range("C3") <> "Hours" Then
            .Rows("6:11").Hidden = True
        Else
            .Rows("6:8").Hidden = .Range("C3") = "Days"
            .Rows("9:11").Hidden = .Range("C3") = "Hours"
        End If
    End With
End Sub

然后在Calculator的工作表代码中输入此事件代码:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C3")) Is Nothing Then
    ConditionalDisplay
End If
End Sub

然后在ThisWorkbook Code中放置此事件:

Private Sub Workbook_Open()
Worksheets("Calculator").Range("C3") = ""
ConditionalDisplay
End Sub