我试图在这个基于单元格输入的简单示例中通过整数计数隐藏Excel中的行.我似乎无法为Application.Rows("x:x")选择命令获得正确的语法.
这是我的示例代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim k As Integer
For k = 0 To 1
i = 2 + k * 20
If Target.Column = 9 And Target.Row = i And Target.Value = "" Then
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
Else
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = False
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "1" Then
Application.Rows("[i+7]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "2" Then
Application.Rows("[i+10]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "3" Then
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = False
End If
Next k
End Sub
Run Code Online (Sandbox Code Playgroud)
i 对Excel计算引擎没有任何意义:它只存在于VBA运行时上下文中.
所以你需要通过使用字符串连接运算符连接字符串文字的值 来构建字符串:i &
ActiveSheet.Rows(i + 4 & ":" & i + 12).EntireRow.Hidden = True
Run Code Online (Sandbox Code Playgroud)
注意使用显式ActiveSheet引用,不需要.Select任何东西 - 99%的时间,你永远不需要工作Selection.
另请注意,文字4和&运算符之间的空格非常重要.这将是语法错误:
ActiveSheet.Rows(i + 4& ":" & i + 12).EntireRow.Hidden = True
Run Code Online (Sandbox Code Playgroud)
因为&令牌也恰好是一个类型提示说明符 - 一个晦涩的符号,几乎只存在向后兼容性,你要避免 - 但是知道它4&本质上意味着CLng(4)(即将文字Integer值转换4为a Long)是很好的.