我是编码初学者,特别是 VBA 初学者。我有一个 Excel 文档,其中隐藏了几行。我需要简洁地取消隐藏这些行,一次三到四行,直到它们全部取消隐藏。我有一个由形状制成的按钮。
目前,我的代码类似于:
Sub UnhideObjectives()
Static currentStage As Integer
Rows("34:37").EntireRow.Hidden = True
Rows("42:45").EntireRow.Hidden = True
Rows("50:53").EntireRow.Hidden = True
Select Case currentStage
Case 0
Rows("34:37").EntireRow.Hidden = False
currentStage = 1
Case 1
Rows("34:37").EntireRow.Hidden = False
Rows("42:45").EntireRow.Hidden = False
currentStage = 2
Case 2
Rows("34:37").EntireRow.Hidden = False
Rows("42:45").EntireRow.Hidden = False
Rows("50:53").EntireRow.Hidden = False
currentStage = 0
End Select
End Sub
但是,我想要一个不具有循环的 currentStage 函数的代码,并且最佳情况下,它需要显示由光标激活的单元格旁边的行。
谢谢你。
据我了解:
您始终显示第 34 - 37 行
如果阶段为 < 1
,则隐藏第 42 - 45 行如果阶段为 < 2
,则隐藏第 50 - 53 行Rows("34:37").EntireRow.Hidden = False
Rows("42:45").EntireRow.Hidden = (currentStage < 1)
Rows("50:53").EntireRow.Hidden = (currentStage < 2)
(请注意,如果没有其他实例隐藏第 34 - 37 行,则可以省略第一行)
之后,您将跳转到下一个阶段,但如果到达最后一个阶段(2),您将跳回第一阶段(0)。您可以通过向当前阶段添加 1 并使用模运算符来完成此操作:
currentStage = (currentStage + 1) Mod 3
建议:始终指定您要使用的工作表。所以你的代码可能看起来像:
Sub UnhideObjectives()
Static currentStage As Integer
With ActiveSheet ' (Or, for example, With ThisWorkbook.Sheets(1)
.Rows("34:37").EntireRow.Hidden = False
.Rows("42:45").EntireRow.Hidden = (currentStage < 1)
.Rows("50:53").EntireRow.Hidden = (currentStage < 2)
End With
currentStage = (currentStage + 1) Mod 3
End Sub