我想得到以下情况的答案。我有基本的VBA知识,如果我使用不正确的表达方式,那就很抱歉。
让我们说我想去长途旅行,但必须检查轮胎'离开前的条件。我必须回答3个问题:
事情是,如果任何问题仍未得到答复或答案为是,则需要进一步的操作(在excel表的后续行中,第5-9行)。如果所有3个答案都是No,那么轮胎就可以了,我希望隐藏后续行。
总结一下,我在G4中输入了以下公式:
=IF(AND(G1="No",G2="No",G3="No"), "No", "Yes")
。
公式完美答案。 我粘贴了一些我到目前为止的代码摘录:
Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$G$4"
Rows("5:9").EntireRow.Hidden = (Target = "No")
...
问题是代码没有在单元格G4中读取公式的答案。如果我删除公式并手动重写答案,代码将完美运行并隐藏后续行。 因此,主要问题是在G4中转换公式的结果,使其对代码可读。
有人可以帮忙吗?或者有更好的解决方案吗?提前谢谢。
答案 0 :(得分:0)
问题不在于“在G4中转换公式的结果以使其对代码可读”,因为它是可读的。但Worksheet_Change
事件的目标不会是G4
,而是G1
或G2
或G3
,然后会更改G4
的值公式计算。但此计算不是Worksheet_Change
事件,而是Worksheet_Calculate
事件。
因此,您要检查G1
事件中G2
或G3
或Worksheet_Change
是否定位
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$G$1", "$G$2", "$G$3"
Me.Rows("5:9").EntireRow.Hidden = (Me.Range("G4").Value = "No")
End Select
End Sub
或者您在Worksheet_Calculate
事件中检查公式重新计算的结果:
Private Sub Worksheet_Calculate()
Me.Rows("5:9").EntireRow.Hidden = (Me.Range("G4").Value = "No")
End Sub