首页 > 解决方案 > 运行宏后如何恢复Excel工作表的确切位置

问题描述

使用 Excel VBA,我如何记忆工作表并将其还原为一组精确的可见行和列?

我有一个 excel 宏,它查看当前单元格的值,计算很多东西并在整个工作簿中运行进行更改,然后将光标恢复到原始单元格。但是原始单元格最终位于窗口的顶行,这很烦人。我希望工作表的视图保持不变,以某种方式不仅记住原始工作表和单元格并在之后选择它们,而且还通过记住可见行和列的确切集!如何?

这有效:

Dim StartingSheet As String
Dim StartingCell As String
StartingCell = ActiveCell.Address
StartingSheet = ActiveSheet.Name
' do a lot of stuff
Worksheets(StartingSheet).Select
Range(StartingCell).Select

但是在宏结束时,可见行和列的集合会发生变化,这很糟糕。

我想运行宏并且在屏幕上看不到任何移动。

标签: excelvba

解决方案


谢谢大家。就我而言,一个好的解决方案是:

    Dim StartingSheet As String
    Dim StartingCell As String
    Dim StartingScrollRow As Integer
    Dim StartingScrollColumn As Integer
    StartingCell = ActiveCell.Address
    StartingSheet = ActiveSheet.Name
    StartingScrollRow = ActiveWindow.ScrollRow  ' the row of the top left cell that is showing
    StartingScrollColumn = ActiveWindow.ScrollColumn ' the column of the top left cell showing

    ' do a bunch of stuff 

    Worksheets(StartingSheet).Select
    ActiveWindow.ScrollRow = StartingScrollRow  ' make this row the top-most row that’s showing
    ActiveWindow.ScrollColumn = StartingScrollColumn  ' make this col the left-most col showing
    Range(StartingCell).Select  ' select the cell that was originally selected

推荐阅读