在并排模式下找出窗口

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

那么,我不应该抱怨,因为这一切都是手动完成的,我应该明智地使用这个function。

作为一个懒惰的开发人员,我想编写一些代码来挖掘自己的能力:我可以编写一个macros来自动化并行模式下对等窗口上的工作表切换吗?

它分解为2个步骤:

  1. 我怎么知道一个窗口,最有可能的ActiveWindow,是在并排模式?
  2. 如果是这样,我怎么知道哪个窗口是它的同行?

我做了我的功课。 看来Excel对这个function不是很友善。 有3种方法

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

和1个布尔属性

  • SyncScrollingSideBySide

关于这个function的Windows集合,但是不足以解决我的问题。

有没有人有任何想法如何实现这一目标? 或者,这确实是不可能的? 先谢谢你。

您可以使用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 

请注意,这需要工作表存在于所有打开的工作簿中。 如果没有,会导致错误。 但是,您可以轻松添加error handling,以忽略具有未发现的相应工作表的工作簿。

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