วิธีเลื่อนแผ่นงานทั้งหมดเข้าด้วยกัน (หรือแนวคิดที่คล้าย 3D อื่นๆ)

ฉันต้องการสเปรดชีต "3D" โดยมีเป้าหมายเพื่อให้มีรายการหลักในเซลล์ 2D ปกติและจากนั้น (อาจมีความสำคัญพอๆ กัน) ในมิติที่สามเหนือแต่ละเซลล์ นี่คือสิ่งที่หลายแผ่นอนุญาตอยู่แล้ว ปัญหาคือฉันไม่สามารถมองเห็นเซลล์มิติที่ 3 ทั้งหมดพร้อมกันได้อย่างง่ายดาย

ตอนแรกฉันหวังว่าจะพบวิธีการที่ซับซ้อนในการใช้แผ่น 3D จริง แต่ตอนนี้ยังไม่มีโชคเลย ฉันตระหนักว่าหากฉันแน่ใจได้ว่าแผ่นงานอื่นๆ จะเรียงกันกับแผ่นงานแรกของฉัน นั่นก็เพียงพอแล้ว ฉันจึงสามารถ "เลื่อน" ไปตามมิติที่สามได้โดยการสลับระหว่างแผ่นงานต่างๆ

แล้วมีวิธีใดบ้างที่จะเลื่อนแผ่นงานทั้งหมดเข้าด้วยกัน?

ถ้าฉันเลื่อนลงบนแผ่นงาน 1 เพื่อดูเซลล์ 123 A เมื่อฉันสลับไปที่แผ่นงาน 2 เซลล์ 123 A จะอยู่ในตำแหน่งเดียวกันบนหน้าจอ และต่อๆ ไปสำหรับแผ่นงาน 3 ขึ้นไป

หากเป็นไปไม่ได้ แต่ใครก็ตามมีข้อเสนอแนะสำหรับวิธีแก้ปัญหาอื่น (แม้จะใช้โปรแกรมอื่น (บน Linux)) ก็คงจะดีมาก


person zooombini    schedule 06.02.2016    source แหล่งที่มา
comment
ไม่แน่ใจถึงการใช้งานที่แน่นอน แต่หากคุณเชี่ยวชาญเพียงพอ คุณสามารถใช้งานกิจกรรมที่พูดถึงได้ ที่นี่ (จัดการเหตุการณ์ของหน้าต่าง) และบังคับให้เลื่อนแผ่นงานอื่น ฉันไม่รู้ว่ามันจะยุ่งยากหรือต้องใช้กระบวนการมากขนาดไหน   -  person Tyler StandishMan    schedule 06.02.2016
comment
ขอบคุณสำหรับข้อเสนอแนะ ฉันยังไม่เชี่ยวชาญพออย่างแน่นอน และดูเหมือนว่าจะเป็นข้อมูลเฉพาะสำหรับ MS Excel อยู่แล้ว แทนที่จะเป็น libreoffice หรืออย่างอื่นที่ฉันสามารถใช้บน linux ได้   -  person zooombini    schedule 06.02.2016
comment
อ่า ขอโทษที ฉันไม่เห็นเขาแท็ก แค่ใช้ Excel แทน หวังว่าคุณจะพบสิ่งที่คุณกำลังมองหา!   -  person Tyler StandishMan    schedule 06.02.2016


คำตอบ (1)


นี่คือโซลูชันการทำงานที่สมบูรณ์ใน 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 เพื่อดูว่าแผ่นงานก่อนหน้าเลื่อนไปที่ใด และเลื่อนแผ่นงานถัดไปไปยังจุดเดียวกันนั้น

หากต้องการทราบว่าชีตเปิดใช้งานเมื่อใด โค้ดจะใช้ ตัวฟังเหตุการณ์ สำหรับ XActivationEventListener อินเตอร์เฟซ.

person Jim K    schedule 06.02.2016
comment
ขอบคุณ มันดูน่ากลัวแต่ก็ดี! ฉันไม่เคยทำอะไรกับมาโครหรือพื้นฐานมาก่อน ดังนั้นฉันจึงทำตามบทช่วยสอนสั้นๆ และสร้างมาโคร Hello World ที่ดูเหมือนว่าจะใช้งานได้ ฉันจะใช้โค้ดที่คุณให้ไว้ที่ไหนและอย่างไร ฉันพยายามคัดลอกมันทั้งหมดลงในโมดูลมาโคร แต่นั่นทำให้เกิดข้อผิดพลาดของคอมไพเลอร์ที่คาดหวัง Sub จาก Dim oListener ฉันหวังว่ามันจะไม่ซับซ้อนเกินไปที่จะอธิบายด้วยความไม่มีประสบการณ์! - person zooombini; 07.02.2016
comment
ตกลง ฉันดำเนินการต่อและนำโค้ดไปใช้อย่างเต็มที่ ตอนนี้คุณควรจะสามารถคัดลอกและวางโดยไม่มีการเปลี่ยนแปลงใดๆ - person Jim K; 08.02.2016
comment
ฉันไม่รู้ว่าคุณจะเห็นสิ่งนี้ไหม @Jim แต่ฉันสงสัยว่ามันจะง่ายหรือไม่ที่จะเลือกเซลล์ที่ใช้งานอยู่เดียวกันเมื่อสลับแผ่นงานโดยเป็นส่วนหนึ่งของมาโครเดียวกัน ฉันค้นหาและพบบทช่วยสอนบางส่วนเกี่ยวกับการค้นหาเซลล์ที่ถูกเลือก แต่ไม่มีใครบอกว่าจะตั้งค่าเซลล์ที่เลือกอย่างไรหลังจากค้นหาแถวและคอลัมน์แล้ว - person zooombini; 18.02.2016
comment
ส่วนที่ 6.5.3 ของ เอกสารมาโครของ Andrew Pitonyak จะบอกวิธีการเลือกเซลล์ - person Jim K; 18.02.2016