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