Top > OOoBasic > Calc > alignment

セル内容の配置 Edit

メニュー -> 書式 -> セル で開くダイアログのセルの書式設定では配置タブで文章の配置,文字の方向,グリッド線までの間隔,体裁が設定できます。また,セルだけでなく,セル範囲,シートオブジェクトでも設定可能です。

また,ここではセルに対して設定を例に挙げます。しかし,セル以外にセル範囲,シートオブジェクトでも設定方法は同じです。

文章の配置 Edit

文章の配置では横,縦,インデントの 3 つを設定します。

Edit

横方向の配置を設定するには,オブジェクトの HoriJustify プロパティーを使用します。この HoriJustify プロパティーは com.sun.star.table.CellHoriJustify の enum を用いて設定します。

Sub cell_horijustify()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.Sheets(0)
  oCell = oSheet.getCellRangeByName( "B2" )
  oSheet.HoriJustify = com.sun.star.table.CellHoriJustify.RIGHT
  oCell.HoriJustify = com.sun.star.table.CellHoriJustify.CENTER
End Sub

上のコードを実行すると, oSheet のシート全体が右揃えになり,oCell の "B2" セルのみが中央揃えに設定されます。

Sub cell_horijustify_check()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.Sheets.getByIndex(0)
  oCell = oSheet.getCellRangeByName( "A2:C4" )
  If oCell.HoriJustify = com.sun.star.table.CellHoriJustify.CENTER Then
    oCell.HoriJustify = com.sun.star.table.CellHoriJustify.STANDARD
  End If
End Sub 

上のコードではセル範囲の配置が「中央揃え」の場合のみ「標準」に設定します。

Edit

縦方向の配置を設定するには,オブジェクトの VertJustify プロパティーを使用します。この VertJustify プロパティーは com.sun.star.table.CellVertJustify の enum を用いて設定します。

Sub cell_vertjustify()
Dim oSheet As Object, oCellRange As Object, oCell As Object
  oSheet = ThisComponent.Sheets(0)
  oCellRange = oSheet.getCellRangeByPosition( 1, 2, 3, 4 ) ' "B3:D5"
  oCell = oSheet.getCellByPosition( 2, 2 ) ' "C3"
  oCellRange.VertJustify = com.sun.star.table.CellVertJustify.TOP
  oCell.VertJustify = com.sun.star.table.CellHoriJustify.CENTER
End Sub

上のコードでは"B3:D5" のセル範囲が上揃え,"C3" セルが中央揃えになります。

インデント Edit

インデントは横配置が「左揃え」でなければ使用されません。このインデントを設定するには ParaIndent プロパティーを使用します。

Sub cell_paraindent()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.Sheets(0)
  oCell = oSheet.getCellRangeByName( "A2" )
  oCell.setPropertyValue( "String", "" )
  oCell.HoriJustify = com.sun.star.CellHoriJustify.LEFT
  oCell.ParaIndent = 88 ' in 1/100th mm
End If

上のコードを実行すると, "A2" セルに "" と入力されて左揃えでインデントが 2 pt に設定されます。ParaIndent プロパティーには 1/100 mm 単位でインデントの数値を指定します。 1 pt は 1/72 inch なので,1 pt = 約 0.0353 mm です。Long 型の値を指定します。

文字の方向 Edit

文字の方向を設定するには RotateAngle, RotateReference, Orientation プロパティーなどを使用します。

度数で指定するには RotateAngle プロパティーを使用します。

Sub cell_rotateangle()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  oCell = oSheet.getCellRangeByName( "B2" )
  oCell.String = "angle"
  oCell.RotateAngle = 3000 ' in 1/100th degree. anti clockwise
End Sub

上のコードを実行するとアクティブシートの "B2" セルに "angle" と入力されて,半時計方向に 30 度文字が回転します。回転する度数は 1/100 度単位で指定します。負の値も指定可能です。値は Long 型です。

基準になる縁を設定するには RotateReference プロパティーを設定します。このプロパティーには com.sun.star.table.CellVertJustify の enum を用います。セルの文章の縦の配置を設定するのにも使用する CellVertJustify はそれぞれ次の設定に用います。

これを RotateReference プロパティーに設定することで基準になる縁を変えることができます。

Sub cell_rotatereference()
Dim oSheet As Object, oCell2 As Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  oCell2 = oSheet.getCellRangeByName( "B3" )
  oCell2.String = "rotate"
  oCell2.RotateAngle = 3000 ' in 1/100th degree. anti clockwise
  oCell2.RotateReference = com.sun.star.table.CellVertJustify.TOP
End Sub

コードを実行すると, "B3" セルの文字が上縁基準として回転されます。"B2" の標準 (下縁基準) とはかなり違った様子になります。

文字を縦書きにする場合には Orientation プロパティーを使用します。このプロパティーには com.sun.star.table.CellOrientation の enum を用います。

Sub cell_orientation()
Dim oSheet As Object, oCellRange As Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  oCellRange = oSheet.getCellRangeByName( "B5:B6" )
  oCellRange.DataArray = Array( Array( "topbottom" ), Array( "stacked" ) )
  oCellRange.getCellByPosition( 0, 0 ).Orientation = _
  com.sun.star.table.CellOrientation.TOPBOTTOM
  oCellRange.getCellByPosition( 0, 1 ).Orientation = _
  com.sun.star.table.CellOrientation.STACKED
End Sub

"B5" セルの "topbottom" の文字は 270 度回転しているだけです。しかし, "B6" セルの "stacked" は文字の縦書きのボタンが押された状態になっています (メニュー -> 書式 -> セル -> 配置タブ -> 文字の方向項目 -> ABCD ボタン)。

STACKED 以外は角度で設定がされますが, Orientation のプロパティー値はちゃんと保持されています。

グリッド線までの間隔 Edit

グリッド線までの間隔を設定するには左,右,上,下の順に ParaLeftMargin, ParaRightMargin, ParaTopMargin, ParaBottomMargin プロパティーを使用します。これらは,1/100 mm 単位で指定します。Long 型の値を指定します。

Sub cell_margin()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  oCell = oSheet.getCellByPosition( 1, 4 ) ' cell "B5"
  oCell.ParaLeftMargin = 150 ' 1.50 mm
  oCell.ParaRightMargin = 50 ' 0.50 mm
  oCell.ParaTopMargin = 100
  oCell.ParaBottomMargin = 200
End Sub

実行すると,セルのインデントが変更されて文字とグリッド線との間隔が標準値 (0.35 mm) よりも広がります。

体裁 Edit

体裁の設定では「折り返す」に IsTextWrapped プロパティーを,「ハイフネーションを行う」に ParaIsHyphenation プロパティーを使用します。「ハイフネーションを行う」は「折り返す」が有効でなければ使用されません。

Sub cell_appearance()
Dim oSheet As Object, oCell As Object
  oSheet = ThisComponent.CurrentController.ActiveSheet
  oCell = oSheet.getCellByPosition( 2, 4 ) ' cell "C5"
  oCell.String = "Functional class nomenclature is often used."
  oCell.IsTextWrapped = True
  oCell.ParaIsHyphenation = True
End Sub

IsTextWrappedParaIsHyphenation はいずれも Boolean 型の値を指定します。ハイフネーションがうまく働かないような気がしますが,辞書などの設定によるものです。

セルサイズに合わせて縮小

oCell.ShrinkToFit = True

これで, メニュー -> 書式 -> セル -> 配置タブ のすべての項目が設定できるようになりました。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes