Cara menggulir semua lembar menjadi satu (atau ide serupa ~3D lainnya)

Saya ingin spreadsheet "3D", dengan tujuan memiliki entri utama dalam sel 2D normal dan kemudian entri (yang mungkin sama pentingnya) dalam dimensi ketiga di atas setiap sel. Ini adalah apa yang sudah dimungkinkan oleh beberapa lembar, masalahnya adalah saya tidak dapat dengan mudah melihat semua sel dimensi 3 sekaligus.

Saya pertama kali berharap menemukan metode canggih dalam menggunakan lembar 3D sebenarnya tetapi sejauh ini belum berhasil. Saya menyadari bahwa jika saya hanya bisa memastikan lembar lainnya akan sejajar dengan lembar pertama saya maka itu sudah cukup, jadi saya bisa "menggulir" sepanjang dimensi ketiga dengan berpindah antar lembar.

Jadi, adakah cara untuk menggulirkan semua lembar secara bersamaan?

Sehingga jika saya gulir ke bawah pada lembar 1 untuk melihat sel 123 A, ketika saya beralih ke lembar 2, sel 123 A berada pada posisi yang sama di layar, dan seterusnya untuk lembar 3 ke atas.

Jika ini tidak mungkin tetapi ada yang punya saran untuk solusi berbeda (bahkan menggunakan program berbeda (di Linux)) itu bagus.


person zooombini    schedule 06.02.2016    source sumber
comment
Tidak yakin dengan implementasi pastinya, namun jika Anda cukup paham, Anda dapat mengimplementasikan peristiwa yang dibicarakan di sini (menangani kejadian di jendela) dan memaksa pengguliran lembar lainnya. Saya tidak tahu betapa rumit atau intensifnya proses ini.   -  person Tyler StandishMan    schedule 06.02.2016
comment
Terima kasih untuk sarannya. Saya jelas tidak cukup paham, dan sepertinya itu khusus untuk MS Excel daripada libreoffice atau hal lain yang bisa saya gunakan di linux?   -  person zooombini    schedule 06.02.2016
comment
Ah maaf, saya tidak melihat dia menandai, hanya berasumsi Excel. Semoga Anda menemukan apa yang Anda cari!   -  person Tyler StandishMan    schedule 06.02.2016


Jawaban (1)


Berikut adalah solusi kerja lengkap di 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

Untuk membuatnya berfungsi, buka Tools -> Customize. Di tab Acara, tetapkan RegisterMyActivationEventListener ke acara Open Document.

Penjelasan kode:

Alih-alih menggulir lembar pada saat yang sama, ia hanya menggulir ke sel yang sesuai setiap kali lembar berbeda diaktifkan. Ia menggunakan antarmuka XViewPane untuk melihat di mana lembar sebelumnya digulir, dan menggulirkan lembar berikutnya ke tempat yang sama.

Untuk mengetahui kapan sheet diaktifkan, kode menggunakan pemroses acara untuk XActivationEventListener antarmuka.

person Jim K    schedule 06.02.2016
comment
Terima kasih, itu terlihat menakutkan tapi bagus! Saya belum pernah melakukan apa pun dengan makro atau Dasar sebelumnya, jadi saya mengikuti tutorial singkat dan membuat makro Hello World yang sepertinya berfungsi. Di mana dan bagaimana cara menerapkan kode yang Anda berikan? Saya mencoba menyalin semuanya ke modul makro tetapi itu memberikan kesalahan kompiler Sub yang Diharapkan dari Dim oListener. Saya harap ini tidak terlalu rumit untuk dijelaskan berdasarkan pengalaman saya! - person zooombini; 07.02.2016
comment
Oke, saya lanjutkan dan menerapkan kode sepenuhnya. Anda sekarang dapat menyalin dan menempelkannya tanpa perubahan apa pun. - person Jim K; 08.02.2016
comment
Saya tidak tahu apakah Anda akan melihat ini, @Jim, tapi saya bertanya-tanya apakah akan mudah untuk memilih sel aktif yang sama saat berpindah lembar, sebagai bagian dari makro yang sama. Saya mencari dan menemukan beberapa tutorial tentang menemukan sel mana yang dipilih, tetapi tidak ada yang mengatakan bagaimana cara mengatur sel yang dipilih setelah menemukan baris dan kolom. - person zooombini; 18.02.2016
comment
Bagian 6.5.3 dari dokumen makro Andrew Pitonyak menjelaskan cara memilih sel. - person Jim K; 18.02.2016