OOobbs/29
質問
VBAアプリからの移植に苦労しています。 特定のセル位置に移動させたいのですが、VBAで ActiveSheet.Range(ActiveSheet.["入力StartCell"]).Select をOOoBASICでは、どう表記したら良いのでしょうか。 回答
私には,ActiveSheet.["入力StartCell"] の部分が分からないのですが,たぶん「どこかのセルを文字列で指定して選択させたい」として説明します。 OOoBasic/Calc/selection のページが参考になると思います。 セル A1 を選択させるときには次のようにできます。(アクティブシートのセル A1 です) Sub selection Dim oDoc As Object, oController As Object Dim oActiveSheet As Object, oCell As Object oDoc = ThisComponent oController = oDoc.getCurrentController() oActiveSheet = oController.getActiveSheet() oCell = oActiveSheet.getCellRangeByName("A1") oController.select(oCell) End Sub 長々としたコードになっていますが,実際に必要な部分は最後の select メソッドです。 アクティブシートについては OOoBasic/Calc/activesheet。 オブジェクトを指定して選択状態にさせるので,指定したセルがアクティブセルでなくても select メソッドを呼び出すことでそのセルがあるシートがアクティブシートになります。 変数を省略したりメソッドからプロパティーに変えて書くとこんな感じです。 Sub selection ThisComponent.CurrentController.select(ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("A1") End Sub よかったら ActiveSheet.["入力StartCell"] の部分について詳しく書いてもらえれば,より詳しく回答できるかもしれません。
選択状態の解除方法があったので,上記のコードで選択状態にした後で選択状態を解除する方法が使えそうです。 Sub selection Dim oDoc As Object, oController As Object Dim oActiveSheet As Object, oCell As Object Dim oFrame As Object oDoc = ThisComponent oController = oDoc.getCurrentController() oFrame = oController.getFrame() oActiveSheet = oController.getActiveSheet() oCell = oActiveSheet.getCellRangeByName("A1") oController.select(oCell) 'Deselect SID_SELECT_NONE 26549 SlotCommand( 26549, oFrame ) End Sub Sub SlotCommand( nSlotID As Integer, oLocFrame As Object ) Dim aArg() As New com.sun.star.beans.PropertyValue Dim oURL As New com.sun.star.util.URL Dim oTrans As Object Dim oDisp As Object oTrans = createUnoService( "com.sun.star.util.URLTransformer" ) oURL.Complete = "slot:" & CStr( nSlotID ) oTrans.parsestrict( oURL ) oDisp = oLocFrame.queryDispatch( oURL, "_self", 0 ) oDisp.dispatch( oURL, aArg() ) End Sub 上記のコードと同じ select メソッドでまずセルを選択状態にした後で,次の行の SlotCommand( 26549, oFrame ) で選択状態を解除します。 この選択状態の解除にはすこし特殊な方法を使っています。SlotCommand で与えた slot コマンドを実行させています。新しく oFrame 変数を使用しています。 ここで使っている slot コマンドは http://api.openoffice.org/servlets/ProjectDocumentList 選択状態でもセルに入力はできると思うのですが,入力後に Enter を押してもセルのカーソルが移動しないことが問題でしょうか。
|