Tôi cần tìm xem ô có hiển thị trên màn hình hay không.Làm thế nào để xác định xem một ô bảng tính có thể nhìn thấy/được hiển thị trong VBA?
Hiển thị, tôi không có nghĩa là bị ẩn. Tôi đặc biệt cố gắng tìm một ô hiện đang được hiển thị trong trang tính đang hoạt động hay không, nếu nó không được hiển thị, tức là: ô đó đã được cuộn ra khỏi trang tính hiện hoạt.
tôi đã xem xét trực tuyến, và chỉ có thể tìm thấy đoạn mã sau đó dường như không làm việc cho tôi:
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
Cảm ơn trước sự giúp đỡ của bạn,
Marwan
Chỉ Tò mò ... Nếu nói di A4 được ẩn đi và bạn có thể nhìn thấy cho đến nói hàng 41. Bạn có xem xét ô A4 có thể nhìn thấy hoặc ẩn? Ngoài ra Bạn sẽ nói gì cho các ô có thể nhìn thấy một phần? –
@SiddharthRout - Tôi sẽ xem xét ô A4 là hiển thị. Một số nền tảng về những gì tôi đang cố gắng hoàn thành, tôi cần tìm LEFT và TOP của một ô cụ thể. Vì vậy, tôi cần phải lặp lại thông qua các tế bào để nó còn lại và thông qua các tế bào trên nó. Tôi cần kiểm tra xem các ô đó có hiển thị hay không và nếu chúng có, tôi cần tính tổng chiều rộng của chúng (hoặc chiều cao). Vấn đề mà tôi đang chạy vào ngay bây giờ, là một số các tế bào được đông lạnh, và không hiển thị như là một phần của phạm vi nhìn thấy được. Tôi không chắc chắn làm thế nào để đối phó với điều đó. Bất kỳ trợ giúp hoặc gợi ý nào? –
@SiddharthRout - Tôi đã tìm ra cách kiểm tra xem ô có bị "cố định" hay không, bằng cách sử dụng mã sau: 'Hàm CellIsInFrozenRange (ô dưới dạng dải ô)' 'Dim inRow As Boolean' ' Dim inColumn As Boolean' 'If (ActiveWindow.SplitRow> 0) Then ' ' inRow = Không Intersect (ô, Dải ô (Ô (1, 1), ' ' Ô (ActiveWindow.SplitRow, 1) .End (xlEnd))) Không có gì ' ' End If' 'If (ActiveWindow.SplitColumn> 0) Sau đó' ' inColumn = Không Intersect (ô, Dải ô (Ô (1, 1), Ô (1, ActiveWindow.SplitColumn) .End (xlDown))) Không có gì là ' 'Kết thúc nếu' ' CellIsInFrozenRange = (inRow hoặc inColumn) ' ' End Function' –