切换工作表时保留视图

时间:2019-08-02 06:50:18

标签: excel vba

我希望能够在工作表之间切换并在下一张工作表上具有相同的视图。

例如,我打开sheet1并滚动到AD500(-ish)并查看一些值。
然后,我想用肉眼将这些值与AD500(-ish)上sheet2的值进行比较。
但是,当我切换到sheet2时,它将显示我上次在该图纸上看到的视图。

可以通过某种方式链接它们吗?
我试图为此找到一个设置,但是没有运气。可以使用VBA完成吗?

1 个答案:

答案 0 :(得分:1)

Excel本身没有对此设置(但我认为应该有设置),但是您可以在VBA中创建此函数。

Private Sub Worksheet_Activate()
    On Error Resume Next

    cell = GetSetting("Range", "visiblerange", "cells")
    zoomsett = GetSetting("Range", "visiblerange", "zoom")
    ActiveWindow.Zoom = zoomsett
    Application.Goto Range(cell)
    Application.Goto Range(Replace(Split(cell, ":")(0), "$", ""))

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    SaveSetting "Range", "visiblerange", "cells", ActiveWindow.VisibleRange.Address
    SaveSetting "Range", "visiblerange", "zoom", ActiveWindow.Zoom
End Sub

每次在具有此代码的工作表上进行选择更改时,这会将可见范围的地址保存在注册表中。
然后,当您使用相同的代码激活工作表时,它首先选择整个范围,然后选择左上方的单元格。
它必须选择整个范围以确保它具有相同的视图,然后“取消选择”它选择一个单元格,即左上方。
为了确保您具有相同的视图,它还会设置图纸的缩放比例。

您还可以选择与上一页相同的单元格。

Private Sub Worksheet_Activate()
    On Error Resume Next

    cell = GetSetting("Range", "visiblerange", "cells")
    zoomsett = GetSetting("Range", "visiblerange", "zoom")
    sele = GetSetting("Range", "visiblerange", "selection")
    ActiveWindow.Zoom = zoomsett
    Application.Goto Range(cell)
    Application.Goto Range(sele)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    SaveSetting "Range", "visiblerange", "cells", ActiveWindow.VisibleRange.Address
    SaveSetting "Range", "visiblerange", "selection", Selection.Address
    SaveSetting "Range", "visiblerange", "zoom", ActiveWindow.Zoom
End Sub

要使用此功能,您需要先将代码添加到希望此行为发生的所有工作表上,然后将其保存为启用宏的Excel文件(xlsm)。
在切换工作表之前,请单击可见范围内的某个位置,然后再切换工作表。