Excel VBAとくらべて使いにくいというのが、
印象である。
記述が冗長になってしまうことが大変不満である。
今後は、具体的なアプリを作りながら、
ラッパーや機能拡張などできる範囲で
整理整頓していきたいと思う・・・のだが。
Excel VBAとくらべて使いにくいというのが、
印象である。
記述が冗長になってしまうことが大変不満である。
今後は、具体的なアプリを作りながら、
ラッパーや機能拡張などできる範囲で
整理整頓していきたいと思う・・・のだが。
Sub ksAutofilter
Dim objController as Object
Dim objFrame as Object
objController = ThisComponent.CurrentController
objFrame = objController.getFrame()
oDispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”)
activeSheet = objController.ActiveSheet
selectedCell = activeSheet.getCellRangeByPosition(0,0,3,4)
ThisComponent.CurrentController.select(selectedCell)
oDispatcher.executeDispatch(objFrame, “.uno:DataFilterAutoFilter”, “”, 0, Array())
End Sub
ExcelにはResizeなる便利なメソッドがありますが、
Libreの場合は、選択範囲を取得し、もう一度選択し直すという手順を
踏むことになりそうです。
Excelなら2行で実装できますが、Libreではそうもいきませんね。
ポイントはIs_xxx_LineValidメソッドを全てTruenにすることらしい。
Sub ksTableBorder()
Dim objSheet As Object
Dim objRange As Object
Dim objTableBorder As New com.sun.star.table.TableBorder
Dim objBorderLineBlack As New com.sun.star.table.BorderLine
objSheet = ThisComponent.CurrentController.ActiveSheet
objRange = ThisComponent.CurrentController.getSelection()
‘黒の単線の設定
With objBorderLineBlack
.Color = RGB(0, 0, 0)
.OuterLineWidth = 20
End With
With objTableBorder
‘
‘表の外枠の設定
.LeftLine = objBorderLineBlack
.RightLine = objBorderLineBlack
.TopLine = objBorderLineBlack
.BottomLine = objBorderLineBlack
.IsLeftLineValid = True
.IsRightLineValid = True
.IsTopLineValid = True
.IsBottomLineValid = True
‘
End With
‘
objRange.TableBorder = objTableBorder
End Sub
選択範囲のRowをカウントするということです。
「060:セルの選択範囲の行列数を数える」
と同じです。
エレガントじゃないけど、これで目的は果たせる
Sub ksSelection()
dim objRange as Object
objRange=ThisComponent.CurrentSelection.RangeAddress
sRow=objRange.StartRow ‘選択範囲の始めの行番号
eRow=objRange.EndRow ‘選択範囲の終わりの行番号
sColumn=objRange.StartColumn ‘選択範囲の始めの列番号
eColumn=objRange.EndColumn ‘選択範囲の終わりの列番号
msgbox sRow & chr(10) & eRow & chr(10) & sColumn & chr(10) & eColumn
End Sub
全く同じことはできませんが、(できるかもしれないが面倒くさい)
以下のコードが最も近いでしょうか。
その他にleft, right, midを使う方法が
あるかもしれません。
Sub ksCalcCharColor()
Dim objDoc as Object, objSheet as Object
Dim objCell as Object
Dim oTextCursor as Object
objDoc=ThisComponent
objSheet=objDoc.getSheets().getByName(“sheet1”)
objCell=objSheet.getCellByPosition(0,0)
oTextCursor = objCell.createTextCursor()
With oTextCursor
.gotoStart( False )
.goRight( 3, True )
.setPropertyValue( “CharColor”, RGB(255,0,0) )
.gotoEnd( False )
End With
msgbox “Success”
End Sub
これは082と同じでできないと思われる。
excelではできても、Libreではうまくいかにと思われる。
Excelとおなじような感じ。
cell = ThisComponent.sheet(0).GetCellByPosition(0,0)
cell.HoriJustify = com.sun.star.table.CellHoriJustify.RIGHT
右詰め:RIGHT
左詰め:LEFT
中央揃え:CENTER
上揃え:TOP
下揃え:BOTTOM