Excel:有条件地显示单元格

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

在这里输入图像说明

根据用户是否从C3中的框中select“Days”或“Hours”,我想要隐藏第6到第8行。 同样,如果用户select“小时”,则应该隐藏第9行到第11行。 这是我迄今写的:

Sub ConditionalDisplay () BeginRow = 1 EndRow = 50 For RowCnt = BeginRow to EndRow IF Cells(RowCnt, CheckColumn).Value = "Days" THEN Rows("6:8").EntireRow.Hidden = TRUE ELSE Rows("6:8").EntireRow.Hidden = FALSE END IF Next RowCnt End Sub 

这不起作用。 即使这样做,我认为这将需要用户每次打开此工作簿时都必须手动运行此macros,这是需要避免的。

有什么build议么?

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

 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的工作表代码中input以下事件代码:

 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