如何确定工作表单元格是否在VBA中可见/显示?
我需要找到一个单元格是否在屏幕上可见。如何确定工作表单元格是否在VBA中可见/显示?
通过可见,我并不意味着隐藏。我特别试图找出一个单元格当前是否显示在活动工作表中,或者是否未显示,即:它已从可见活动工作表中滚动。
我在网上看了,也只能找到如下代码似乎并没有为我工作:
Private Sub CommandButton1_Click()
With Worksheets(1).Cells(10, 10)
'MsgBox "Value: " & .Value & ", Top: " & .Top & ", Left: " & .Left
Dim visibleCells As Range
Set visibleCells = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
If Intersect(Worksheets(1).Cells(10, 10), visibleCells) Is Nothing Then
MsgBox "This cell is not visible."
End If
End With
End Sub
预先感谢您的帮助,
马尔
这里的一个功能,可以做你想做的:
Function CellIsInVisibleRange(cell As Range)
CellIsInVisibleRange = Not Intersect(ActiveWindow.VisibleRange, cell) Is Nothing
End Function
至少我认为它的确如此。直到现在,我还没有意识到VisibleRange属性。
这样称呼它:
If CellIsInVisibleRange(ActiveSheet.Range("A35")) Then
MsgBox "Cell is visible"
Else
MsgBox "Cell isn't visible"
End If
+ 1我用这个和另一个变体来检查单元格的可见性。 – 2012-08-13 22:44:30
@DougGlancy - 非常感谢。这很好。 – 2012-08-13 23:17:52
@SiddharthRout - 您使用的其他变体是什么? – 2012-08-13 23:18:22
只是好奇......如果说有什么A4单元格是隐藏的,你可以看到截止到你可以考虑电池A4可见或隐藏行说41?另外你会说部分可见的细胞? – 2012-08-13 23:17:12
@SiddharthRout - 我会认为单元格A4是可见的。关于我想要完成的一些背景知识,我需要找到特定单元格的左侧和顶部。所以我需要遍历单元格到它的左侧并通过它上面的单元格。我需要检查这些单元格是否可见,如果是,我需要总结它们的宽度(或高度)。我现在遇到的问题是,一些单元格被冻结,并且不会显示为可见范围的一部分。我不知道该如何处理。任何帮助或建议? – 2012-08-15 05:05:05
@SiddharthRout - 我想通过使用以下代码来检查单元格是否“冻结”: '函数CellIsInFrozenRange(单元格为范围)' 'Dim inRow As Boolean' 'Dim inColumn As Boolean'如果(ActiveWindow.SplitRow> 0)then' 'inRow = Not Intersect(cell,Range(Cells(1,1),' 'Cells(ActiveWindow.SplitRow,1).End(xlEnd)))Is Nothing如果(ActiveWindow.SplitColumn> 0)Then' 'inColumn = Not Intersect(cell,Range(Cells(1,1),Cells(1,ActiveWindow.SplitColumn).End(xlDown))如果(ActiveWindow.SplitColumn> 0)Then' '' 'End If' ' )Is Nothing' 'End If' 'CellIsInFrozenRange =(inRow or inColumn)' 'End Function' – 2012-08-15 06:01:10