2016-02-06 4 views
-1

У меня есть простое представление о том, что я ищу, но я не уверен, как объяснить это ясно, поэтому извиняюсь заранее!Как прокрутить все листы электронных таблиц libreoffice calc вместе. (Или другие идеи, похожие на 3D)

Мне нужна электронная таблица «3D» с целью иметь основные записи в нормальных 2D-ячейках и затем (потенциально только важные) записи в третьем измерении над каждой ячейкой. Это то, что уже допускают несколько листов, проблема заключается в том, что я не могу легко сразу увидеть все ячейки третьего измерения.

Я впервые надеялся найти какой-то сложный метод использования реальных 3D-листов, но пока не повезло. Я понял, что если бы я мог только убедиться, что другие листы совпадут с моим первым листом, это будет достаточно хорошим, поэтому я мог бы «прокручивать» по третьему измерению, переключаясь между листами.

Итак, есть ли способ прокрутить все листы вместе? Таким образом, если я прокручиваю вниз по листу 1, чтобы видеть ячейку 123 A, когда я переключаюсь на лист 2, ячейка 123 A находится в том же положении на экране и так далее для листов 3 и выше.

Если это невозможно, но у кого-то есть предложения для другого решения (даже с использованием другой программы (по Linux)), это было бы здорово.

Большое спасибо!

+0

Не уверен в точном выполнении, но если вы достаточно сообразительны, вы можете реализовать события, о которых говорилось [здесь] (http://www.cpearson.com/excel/DetectScroll.htm) (обработка событий окна) и заставить свиток других листов. Я понятия не имею, насколько это громоздко или трудоемко. –

+0

Спасибо за предложение. Я определенно недостаточно разбираюсь, и похоже, что это специфично для MS Excel, а не libreoffice или что-то еще, что я могу использовать в Linux? – zooombini

+0

Ах, извините, я не видел его тегов, просто принял Excel. Надеюсь, вы найдете то, что ищете! –

ответ

2

Вот полный рабочий раствор в 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.

Объяснение кода:

Вместо прокрутки листов в то же время, он просто прокручивается в соответствующую клетку всякий раз, когда активируется другой лист. Он использует интерфейс XViewPane, чтобы увидеть, где прокручивается предыдущий лист, и прокручивает следующий лист к тому же месту.

Чтобы узнать, когда лист активируется, код использует an event listener для интерфейса XActivationEventListener.

+1

Спасибо, это выглядит пугающе, но хорошо! Я никогда не делал ничего с макросами или Basic раньше, поэтому я пошел по быстрому учебнику и сделал макрос Hello World, который, похоже, работает. Где и как реализовать код, который вы предоставили? Я попытался скопировать все это в макромодуль, но это дает ошибку компилятора «Ожидаемый суб» из «Dim oListener». Надеюсь, что это не слишком сложно объяснить с моей полной неопытостью! – zooombini

+0

Хорошо, я пошел и реализовал код полностью. Теперь вы можете копировать и вставлять его без каких-либо изменений. –

+0

Удивительно, большое вам спасибо! Он отлично работает. – zooombini

 Смежные вопросы

  • Нет связанных вопросов^_^