Comment faire pour déterminer si une Cellule de feuille de calcul est Visible/Affiché dans VBA?

J'ai besoin de savoir si une cellule est visible sur l'écran.

Visibles, je ne veux pas dire caché. Je suis précisément en essayant de trouver si une cellule est actuellement affichée dans la feuille active, ou si elle n'est pas affichée, c'est à dire: il a été défilé hors du visible feuille active.

J'ai regardé en ligne, et ne peut trouver le code suivant qui ne semble pas fonctionner pour moi:

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

Merci d'avance pour votre aide,

Marwan

Juste Curieux de savoir... Ce que si par exemple la Cellule A4 est caché et vous pouvez voir jusqu'à dire que les lignes 41. Envisagez-vous de la cellule A4 visibles ou cachés? Aussi Que diriez-vous pour les cellules qui sont en partie visibles?
Je considère la cellule A4 comme étant visible. Un peu de fond sur ce que je suis en train de réaliser, j'ai besoin de trouver le HAUT et à GAUCHE d'une cellule particulière. J'ai donc besoin de parcourir les cellules à gauche et à travers les cellules au-dessus d'elle. J'ai besoin de vérifier si ces cellules sont visibles, et si elles le sont, j'ai besoin de la somme de la largeur (ou la hauteur). Le problème que je suis en cours d'exécution en droit maintenant, c'est que certaines des cellules sont congelées, et ne se présentent pas comme une partie de la lumière visible. Je ne suis pas sûr de la façon de les gérer. Toute aide ou des suggestions?
J'ai compris comment vérifier si la cellule est "gelé" ou pas, en utilisant le code suivant: Function CellIsInFrozenRange(cell As Range) Dim inRow As Boolean Dim inColumn As Boolean If (ActiveWindow.SplitRow > 0) Then inRow = Not Intersect(cell, Range(Cells(1, 1), Cells(ActiveWindow.SplitRow, 1).End(xlEnd))) Is Nothing End If If (ActiveWindow.SplitColumn > 0) Then inColumn = Not Intersect(cell, Range(Cells(1, 1), Cells(1, ActiveWindow.SplitColumn).End(xlDown))) Is Nothing End If CellIsInFrozenRange = (inRow Or inColumn) End Function

OriginalL'auteur Marwan Marwan مروان مروان | 2012-08-13