セルが画面に表示されているかどうかを調べる必要があります。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
おかげで、
マルワン
興味があるだけ...何かのセルは、A4が隠されていると言うと、あなたがセルA4が表示または非表示を検討だろうと言う行41までアップ見ることができますか?また、部分的に目に見える細胞について、あなたは何と言うでしょうか? –
@SiddharthRout - 私はセルA4を目に見えるものと見なします。私が達成しようとしているものの背景については、特定のセルのLEFTとTOPを見つける必要があります。だから私はそれが残っている細胞とその上の細胞を通って細胞を繰り返す必要があります。私はそれらの細胞が見えるかどうかを調べる必要があり、そうであればその幅(または高さ)を合計する必要があります。私が今実行している問題は、一部の細胞が凍結し、可視範囲の一部として現れないことです。私はそれに対処する方法がわかりません。助けや提案はありますか? –
@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) ' '終了関数 ' –