我有一系列宏,格式如下:
Sub EUCheck_Click()
If Range("EU_Tick").Value = "True" Then
ActiveSheet.Rows("54:60").EntireRow.Hidden = False
Else:
ActiveSheet.Rows("54:60").EntireRow.Hidden = True
End If
End Sub
这是有效的,但是当我在这个工作表中选择一个单元格时,它通常会从我试图选择的单元格向上或向下选择8/9个单元格。
我认为这是从选择单元格的位置开始的,如果第一个1/2复选框被点击,单元格被隐藏,但是我尝试点击的位置和选择的位置之间的差距是保持的。
这是VBA中的一个bug。即使无法访问隐藏行号,选择项也会计算隐藏行号。最好的解决办法是Toddleson的评论。
另一个解决方案是在开头用Rows.EntireRow.Hidden = False
显示所有行,并在宏结束时立即隐藏所有相关行。
我在MS Project中遇到了同样的问题,因为没有办法使用路径。MS项目的解决方案是Application.FilterClear
和Application.OutlineShowAllTasks
。