VBA判断单元格是否完全显示或置顶

音标拼写这一行是冻结的

不论滚轮在哪里,前往“4S-U05”单元格时,就一定会前往

但4S-U05永远只会出现在窗口中间的位置(除非视图非常大,大到窗口只能看到2行才有可能永远出现在第一行)

现在希望的是通过判断,自动前往4S-U05那一行,并滚轮下移几行,让4S-U05行紧贴在音标拼写行的下面(以置顶的方式出现)

 

第二个问题是,如何判断当前单元格在窗口中只露出一半?

比如下面的three,它只露出一半,此时你点击它,窗口也不会自动帮你往下移动滚轮以确保完全看到这一个单元格

第一个需求可以用这段代码

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Sub Workbook_Open()
    Do
        s1 = Windows(1).VisibleRange.Rows.Cells.Address
        s2 = Left(s1, InStr(s1, ":") - 1)
        s3 = Right(s2, Len(s2) - 1)
        s4 = Right(s3, Len(s3) - InStr(s3, "$"))
        If Int(s4) < 4 Then '4是你想置顶的行数
            ActiveWindow.SmallScroll Down:=1
        End If
        DoEvents
        Sleep 100
    Loop
End Sub

第二个需求没有什么好方法的,vba毕竟是个简化的vb,不可能所有的东西都做到

 

兄弟,其实你已经解答了第二个问题了。。。同样的方法,提取可见范围底部单元格address的行数,如果选中的单元格行数刚好是底部单元格,那就selectionchange事件下移一格。太谢谢了!