【发布时间】:2020-08-02 21:55:18
【问题描述】:
我有一段通用代码用于隐藏我正在创建的 Excel 文档的行,我将在此电子表格中大量使用此代码,并且已经到了出现错误“程序太大”的地步'。 有问题的代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
''''''''General Selection statement'''''''
If Not Application.Intersect(Range("F7"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "-": Rows("8:20").EntireRow.Hidden = True
Case Is = "No": Rows("8:20").EntireRow.Hidden = False
Case Is = "Yes": Rows("8:20").EntireRow.Hidden = True
End Select
End If
If Not Application.Intersect(Range("B8"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Other": Rows("9:10").EntireRow.Hidden = False
Case Is <> "Other": Rows("9:10").EntireRow.Hidden = True
End Select
End If
If Not Application.Intersect(Range("C11"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "-": Rows("12:19").EntireRow.Hidden = True
Case Is = "Yes": Rows("12:19").EntireRow.Hidden = False
Case Is = "No": Rows("12:19").EntireRow.Hidden = True
End Select
End If
End Sub
是否可以创建一个子例程,然后在需要时调用它? 选定的单元格会发生变化,但范围会保持不变,我希望这有意义吗? 我是 VBA 新手,因此我们将不胜感激。
【问题讨论】:
-
如果您需要重复代码,应该将类似的代码放入循环中或放入您可以使用所需参数调用的子例程中,因此重复使用具有不同参数的相同子例程。 • 请注意
Range(Target.Address)与写Target完全相同。