5

“并排查看”和“同步滚动”使两个电子表格的比较比以往更容易。但是,没有“同步切换选项卡”功能,所以如果我切换到其中一个工作簿中的不同选项卡并继续滚动,同步滚动会变得非常有趣。

好吧,我不应该抱怨,因为这一切都是手动完成的,我应该明智地使用这个功能。

作为一个懒惰的开发者,我想写一些代码来挖掘自己:我可以写一个宏来自动在并排模式下在对等窗口上切换工作表吗?

它分为两个步骤:

  1. 我如何知道一个窗口(很可能是 ActiveWindow)是否处于并排模式?
  2. 如果是,我如何判断哪个窗口是它的对等点?

我做了我的功课。似乎 Excel 在此功能上对编程不太友好。有3种方法

  • BreakSideBySide()
  • CompareSideBySideWith(WindowName)
  • ResetPositionsSideBySide()

和 1 个布尔属性

  • SyncScrollingSideBySide

关于Windows与此功能相关的集合,但不足以解决我的问题。

有谁知道如何实现这一目标?或者,真的不可能吗?先感谢您。

4

1 回答 1

0

您可以使用 Workbook_SheetActivate 事件实现此目的:

http://msdn.microsoft.com/en-us/library/office/ff195710.aspx

如果您将此代码放在您的 ThisWorkbook 对象中,那么每次更改活动工作表时,它将...

  1. 循环浏览具有不同名称的所有打开的工作簿
  2. 查找与您刚刚单击的工作表同名的工作表
  3. 激活另一个工作簿中的工作表

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    
        For i = 1 To Application.Workbooks.Count
            If Application.Workbooks(i).Name <> ThisWorkbook.Name Then
    
                Dim otherWB As Workbook
                Set otherWB = Application.Workbooks(i)
                otherWB.Sheets(Sh.Name).Activate
    
            End If
        Next
    
    End Sub
    

请注意,这要求工作表存在于所有打开的工作簿中。如果没有,将导致错误。但是,您可以轻松添加错误处理以忽略具有未找到相应工作表的工作簿。

另请注意,最好在只打开两个工作簿时使用它。我没有研究您提到的其他方法,但可能存在一种方法来识别当前处于并排模式的两个工作簿,此时代码可以摆脱其 for 循环并变得更加简洁。

于 2013-09-05T21:31:38.970 回答