如何一起滚动所有工作表(或其他类似 ~3D 的想法)

How to scroll all sheets together (or other ~3D-like ideas)

我想要一个“3D”传播sheet,目的是在普通二维单元格中有主要条目,然后(可能同样重要)在每个单元格上方的第三维中有条目。这就是多个 sheet 已经允许的,问题是我不能轻易地一次看到所有的第 3 维单元格。

我最初希望找到一些使用实际 3D sheet 的复杂方法,但到目前为止没有成功。我意识到,如果我只能确保其他 sheet 与我的第一个 sheet 对齐,那就足够了,所以我可以 "scroll" 通过在第三个维度之间切换sheets.

那么,有什么方法可以将所有 sheet 滚动到一起吗?

这样,如果我在 sheet 1 上向下滚动以查看单元格 123 A,当我切换到 sheet 2 时,单元格 123 A 位于屏幕上的相同位置,依此类推sheets 3 及以上。

如果这是不可能的,但有人对不同的解决方案有建议(甚至使用不同的程序(在 Linux)),那就太好了。

这是 OpenOffice Basic 中的完整工作解决方案:

Global OldSheet As Object
Global HandlingActivationEvent As Boolean

Sub RegisterMyActivationEventListener
    oListener = CreateUnoListener( _
        "ActivListener_", "com.sun.star.sheet.XActivationEventListener" )
    oController = ThisComponent.CurrentController
    oController.addActivationEventListener(oListener)
    OldSheet = oController.ActiveSheet
    HandlingActivationEvent = False
    MsgBox "Now Listening"
End Sub

Sub ActivListener_activeSpreadsheetChanged( oEvent )
    If HandlingActivationEvent Then
        Exit Sub
    End If
    HandlingActivationEvent = True
    oController = ThisComponent.CurrentController
    newSheet = oController.ActiveSheet
    oController.setActiveSheet(OldSheet)

    col = oController.getFirstVisibleColumn()
    row = oController.getFirstVisibleRow()
    oController.setActiveSheet(newSheet)
    oController.setFirstVisibleColumn(col)
    oController.setFirstVisibleRow(row)

    'MsgBox col & ", " & row
    OldSheet = newSheet
    HandlingActivationEvent = False
End Sub

要使其正常工作,请转至 Tools -> Customize。在“事件”选项卡中,将 RegisterMyActivationEventListener 分配给 Open Document 事件。

代码解释:

它不会同时滚动 sheet,而是在激活不同的 sheet 时滚动到相应的单元格。它使用 XViewPane 界面查看前一个 sheet 滚动到的位置,并将下一个 sheet 滚动到同一位置。

要查明 sheet 何时被激活,代码使用 an event listener for the XActivationEventListener 接口。