2012-08-13 29 views
9

セルが画面に表示されているかどうかを調べる必要があります。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 

おかげで、

マルワン

+0

興味があるだけ...何かのセルは、A4が隠されていると言うと、あなたがセルA4が表示または非表示を検討だろうと言う行41までアップ見ることができますか?また、部分的に目に見える細胞について、あなたは何と言うでしょうか? –

+0

@SiddharthRout - 私はセルA4を目に見えるものと見なします。私が達成しようとしているものの背景については、特定のセルのLEFTとTOPを見つける必要があります。だから私はそれが残っている細胞とその上の細胞を通って細胞を繰り返す必要があります。私はそれらの細胞が見えるかどうかを調べる必要があり、そうであればその幅(または高さ)を合計する必要があります。私が今実行している問題は、一部の細胞が凍結し、可視範囲の一部として現れないことです。私はそれに対処する方法がわかりません。助けや提案はありますか? –

+1

@SiddharthRout - 次のコードを使用して、セルがフリーズしているかどうかを確認する方法を見つけました。 'Function CellIsInFrozenRange(cell As Range)' 'Dim inRow As Boolean' ' Dim inColumn As Boolean' 'If(ActiveWindow.SplitRow> 0)Then' 'inRow = Intersect(セル、範囲(セル、1,1)、 ' 'セル(ActiveWindow.SplitRow、1).End(xlEnd)))は何もない' 'End If' '(ActiveWindow.SplitColumn> 0)Then ' ' inColumn =非交差(セル、範囲(セル1,1)、セル(1、ActiveWindow.SplitColumn).End(xlDown)) )Nothing' 'End If' ' CellIsInFrozenRange =(inRowまたはinColumn) ' '終了関数 ' –

答えて

14

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

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 
+0

+1このセルと他のバリエーションを使用して、セルの可視性をチェックします。 –

+0

@DougGlancy - ありがとうございます。それは素晴らしい作品です。 –

+1

@SiddharthRout - あなたが使っている他のバリエーションは何ですか? –

関連する問題