这是代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
If Range("A2").Value = "Select" Then
ActiveSheet.Rows("5:61").Select
Selection.EntireRow.Hidden = True
End If
End If
End Sub
由于某种原因,如果范围高于“5:58”,则会出现运行时错误“1004”。
答案 0 :(得分:1)
此代码在Excel 2013中有效,遗憾的是我没有其他版本。由于我不喜欢参考活动工作簿和活动工作表以及选择的使用,您还可以使用
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
If Range("A2").Value = "Select" Then
Target.Parent.Rows("5:61").EntireRow.Hidden = True
End If
End If
End Sub
Target.Parent指的是包含范围的工作表。
答案 1 :(得分:1)
您使用的是哪个版本的Excel?我在Excel 2007上尝试了你的代码,它的工作原理。我删除了选择行并以这种方式尝试,这也有效。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
If Range("A2").Value = "Select" Then
ActiveSheet.Rows("5:61").EntireRow.Hidden = True
End If
End If
End Sub
答案 2 :(得分:1)
代码正确且有效。
问题是由于我必须使用许多隐藏的行/列。 Excel仅允许您隐藏有限数量。
答案 3 :(得分:1)
简单的解决方法:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
If Range("A2").Value = "Select" Then
Dim Rg as Range
For each Rg in Target.Parent.Rows("5:61") 'not sure if you need to add a .rows here, just try
Rg.EntireRow.Hidden = True
next Rg
End If
End If
End Sub
这样它一次只能隐藏一行。