如何确定工作表单元格在VBA中是否可见/显示?

Mar*_*وان 10 excel vba excel-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
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助,

马尔万

Dou*_*ncy 17

这是一个完成你想要的功能:

Function CellIsInVisibleRange(cell As Range)
CellIsInVisibleRange = Not Intersect(ActiveWindow.VisibleRange, cell) Is Nothing
End Function
Run Code Online (Sandbox Code Playgroud)

至少我认为确实如此.到目前为止我还没有意识到VisibleRange属性.

称之为:

If CellIsInVisibleRange(ActiveSheet.Range("A35")) Then
    MsgBox "Cell is visible"
Else
    MsgBox "Cell isn't visible"
End If
Run Code Online (Sandbox Code Playgroud)