LibreOffice Calc Basic - シートを選択する方法
◆setActiveSheetメソッド
インデックスでシートを選択するには、カレントコントローラのsetActiveSheetメソッドの引数にScTableSheetObjオブジェクトへの参照を指定します。
ScTableSheetObjオブジェクトへの参照は次の構文で取得できます。
[構文]
DocumentObject.CurrentController.ActiveSheet
DocumentObject.Sheets.getByIndex(シート番号)
DocumentObject.Sheets.getByName("シート名")
DocumentObject.Sheets(シート番号)
DocumentObject.CurrentController.ActiveSheetは、現在アクティブなシートのオブジェクトを表します。
シート番号は、Excelの場合は1から始まりますがLibreOfficeは0から始まります。つまり、最初のシートが0になります。
Sub oActiveSheet oDoc = ThisComponent oController = oDoc.getCurrentController() oSheets = oDoc.getSheets() oController.ActiveSheet End subサンプルコード getByIndex
Sub SelectShet oDoc = ThisComponent oController = oDoc.getCurrentController() oSheets = oDoc.getSheets() oController.setActiveSheet(oSheets.getByIndex(0)) End Subサンプルコード getByName
Sub ActivateSheet oDoc = ThisComponent oController = oDoc.getCurrentController() oSheets = oDoc.getSheets() oController.setActiveSheet(oSheets.getByName("Sheet1")) End subサンプルコード Sheets(シート番号)
Sub ActivateSheet oDoc = ThisComponent oController = oDoc.getCurrentController() oSheets = oDoc.getSheets() oController.setActiveSheet(oSheets(0)) End sub
▼ページトップへ
◆関数化する
基本形は上のとおりですが、何カ所もボタンで指定する場合は何度も何度も書くのは面倒なので、サブプロシージャーとして作成し、引数でシート名を指定するようにすると便利です。
次のコードでは、ActivateSheetという関数を作成しています。このコードを利用してtestActivateプロシージャでは一行で済ますことができています。
Sub ActivateSheet(SheetName as string) oDoc = ThisComponent oController = oDoc.getCurrentController() oSheets = oDoc.getSheets() oController.setActiveSheet(oSheets.getByName(SheetName)) End sub sub testActivate() ActivateSheet("Sheet2") End sub