差不多了!如何通过整数隐藏行?

Pau*_*ird 3 vba integer

我试图在这个基于单元格输入的简单示例中通过整数计数隐藏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)

Mat*_*don 7

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)是很好的.