作者:乳酪杳杳 | 来源:互联网 | 2022-12-07 17:36
我试图在这个基于单元格输入的简单示例中通过整数计数隐藏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
Mathieu Guin..
7
i
对Excel计算引擎没有任何意义:它只存在于VBA运行时上下文中.
所以你需要通过使用字符串连接运算符连接字符串文字的值 来构建字符串:i
&
ActiveSheet.Rows(i + 4 & ":" & i + 12).EntireRow.Hidden = True
注意使用显式ActiveSheet
引用,不需要.Select
任何东西 - 99%的时间,你永远不需要工作Selection
.
另请注意,文字4
和&
运算符之间的空格非常重要.这将是语法错误:
ActiveSheet.Rows(i + 4& ":" & i + 12).EntireRow.Hidden = True
因为&
令牌也恰好是一个类型提示说明符 - 一个晦涩的符号,几乎只存在向后兼容性,你要避免 - 但是知道它4&
本质上意味着CLng(4)
(即将文字Integer
值转换4
为a Long
)是很好的.
1> Mathieu Guin..:
i
对Excel计算引擎没有任何意义:它只存在于VBA运行时上下文中.
所以你需要通过使用字符串连接运算符连接字符串文字的值 来构建字符串:i
&
ActiveSheet.Rows(i + 4 & ":" & i + 12).EntireRow.Hidden = True
注意使用显式ActiveSheet
引用,不需要.Select
任何东西 - 99%的时间,你永远不需要工作Selection
.
另请注意,文字4
和&
运算符之间的空格非常重要.这将是语法错误:
ActiveSheet.Rows(i + 4& ":" & i + 12).EntireRow.Hidden = True
因为&
令牌也恰好是一个类型提示说明符 - 一个晦涩的符号,几乎只存在向后兼容性,你要避免 - 但是知道它4&
本质上意味着CLng(4)
(即将文字Integer
值转换4
为a Long
)是很好的.