Top > OOoBasic > Calc > PosSize

セルの位置とサイズ Edit

セルの位置を利用したり、セルの幅や高さを変更する方法です。

サイズ Edit

セルのサイズを変更するには列オブジェクトや行オブジェクトを使用します。セルに対して Columns または Rows プロパティー,getColumns または getRows メソッドを使用してそれぞれのオブジェクトを取得します。

Sub cell_size_1
Dim oSheet As Object, oCellRange As Object
Dim oColumns As OBject, oRows As Object

  oSheet = ThisComponent.Sheets( 0 )
  oCellRange = oSheet.getCellRangeByPosition( 1, 1, 3, 4 ) ' B2:D5

  oColumns = oCellRange.getColumns()
  oRows = oCellRange.getRows()
End Sub

上のコードなどを実行して情報を得てください。サイズを変更する際にはしたのコードのようにします。

Sub cell_size_2
Dim oSheet As Object, oCellRange As Object
Dim oColumns As OBject, oRows As Object
  oSheet = ThisComponent.Sheets( 0 )
  oCellRange = oSheet.getCellRangeByPosition( 1, 1, 3, 4 ) ' B2:D5
  oColumns = oCellRange.getColumns()
  oRows = oCellRange.getRows()

  oColumns.Width = 2500
  oRows.Height = 1000
End Sub

上のコードでは列の幅を 25 mm に,行の高さを 10 mm に設定しています。この場合,ともに 1/100 mm 単位で長さを指定します。

最適サイズ Edit

セルの高さや幅を内容に合わせて最適なサイズにする方法もあります。列オブジェクトと列オブジェクトの OptimalWidth と OptimalHeight プロパティーを使用します。

Sub cell_optimalsize_1
Dim oSheet As Object, oCellRange As Object
 Dim oColumns As OBject, oRows As Object
  oSheet = ThisComponent.Sheets( 0 )
  oCellRange = oSheet.getCellRangeByPosition( 1, 1, 3, 4 ) ' B2:D5
  oColumns = oCellRange.getColumns()
  oRows = oCellRange.getRows()

  oColumns.OptimalWidth = True
  oRows.OptimalHeight = True
End Sub

ともに使用は簡単でそれぞれのプロパティーに "True" を設定するだけです。

セルのサイズ Edit

セルのサイズはセルオブジェクトからも取得できます。この方法ではサイズを変更することは出来ません。

aSize = oCell.Size
msgbox aSize.Width & ", " & aSize.Height

セルの位置 Edit

特定のセルの位置を知るには Position プロパティを参照します。

aPos = oCell.Position
msgbox aPos.X & ", " & aPos.Y

位置は変更できません。

セルの微妙な位置とサイズ Edit

セルの位置とサイズを上記の全ての方法で調べると少しずつ位置やサイズが合わないことが分かります。

たとえば、oCell.Size.Width として取得したセルの幅は oCell.getColumns().Width よりも短くなっています。

セル D4 と右隣のセル D5 で各値を調べてみました。(セル D4 の位置 X + セル D4 の幅) = (セル D5 の位置 X) になるかと思いきや…。

'oCell : D4
oCell.Size.Width ' : 2259
oCell.getColumns().Width ' : 2267
oCell.Position.X ' : 6774

'oCell2 : D5
oCell.Position.X ' : 9032

2259 + 6774 = 9033
2267 + 6774 = 9041

どちらの合計値も一致しません。これはセルの枠線に幅があるのか!? (さらにセル同士の間隔も)

ということで、ピタッとセルに合わせてなにかを配置させたいという場合には考慮してみてください。


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