LibreOffice Calc Basic - セルA1を画面の左上隅に配置する方法

◆Excel VBAの場合

 Excel VBAの場合は非常に簡単です。
次のサンプルコードでは、Sheet1を選択しあと、セルA1を選択状態にします。

Sheets("Sheet1").Activate
Application.Goto reference:=Range("A1"), Scroll:=True

◆LibreOffice Basicの場合

LibreOffice Basicの場合は、CurrentController の select メソッドを使用することで選択セル範囲を設定できます。
次のサンプルコードでは、Sheet1を選択しあと、セルA1を選択状態にします。

Dim oDoc As Object
Dim oSheets As Object
Dim Sheet As Object
Dim oController As Object
Dim CellRange As Object
Dim Cell As Object

oDoc =ThisComponent
oController = oDoc.getCurrentController() 

oSheets = oDoc.getSheets()
oController.setActiveSheet(oSheets.getByName("Sheet1"))

oSelectedCellRange = _
  oController.getActiveSheet().getCellRangeByName( "A1" ) 
oController.select( oSelectedCellRange )

このサンプルコードのoController.setActiveSheet(oSheets.getByName("Sheet1"))の行をコメントアウトすれば、アクティブシートのセルA1を画面の左上隅にすることができます。

注意
Excelでは、指定したセルが必ず左上隅になりますが、LibreOfficeの場合は、そうなりません。A1であれば左上隅になりますが、その他のセル、例えばA90などを指定すると、画面の中央になってしまいます。

マクロ記録では
マクロ記録機能で作成されたコードです。同じように機能します。

Sub gotoMenu
    dim document   as object
    dim dispatcher as object
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Nr"
    args1(0).Value = 1

    dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
    
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = "$A$1"

    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
End Sub


▼ページトップへ