10

セルが画面に表示されているかどうかを確認する必要があります。

見えるということは、隠れているという意味ではありません。具体的には、セルが現在アクティブ シートに表示されているかどうか、または表示されていないかどうか、つまり、表示されているアクティブ シートからスクロールされているかどうかを確認しようとしています。

オンラインで調べたところ、うまくいかないように見える次のコードしか見つかりませんでした。

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

よろしくお願いいたします。

マーワン

4

2 に答える 2

17

これがあなたが望むことをする関数です:

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
于 2012-08-13T22:35:52.033 に答える