当我选择B3:B5这三个单元格的范围时,该方法按预期运行并显示三条消息,其中包含" 3"," 4"和" 5"。
Sub visTest()
Dim c As Range
For Each c In Selection.SpecialCells(xlCellTypeVisible)
MsgBox c.row
Next c
End Sub
问题是当我只选择一个单元格时:
Selection.SpecialCells(xlCellTypeVisible)
返回工作表上的所有可见单元格,并从单元格A1开始。
如何让它只返回一个选定单元格中的一个可见单元格? 为什么会出现问题?
谢谢!
答案 0 :(得分:4)
这将执行正确的限制:
Sub visTest()
Dim c As Range
For Each c In Intersect(Selection, Selection.SpecialCells(xlCellTypeVisible))
MsgBox c.Row
Next c
End Sub
答案 1 :(得分:1)
它返回工作表上所有已使用单元格的原因是,如果您指定的范围只包含一个单元格,那么,与Excel中的许多其他方法一样,SpecialCells方法假定您需要used range of the worksheet。
答案 2 :(得分:0)
使用" specialCells"消除范围不正确的问题把这一行放到代码
If Selection.Cells.Count > 1 Then Selection.SpecialCells(xlCellTypeVisible).Select
End If
这样,只有当实际选择的区域由多个单元格组成时,excell才会使用此方法。