Top > OOoBasic > Calc > merge

セル範囲の結合 Edit

セル範囲の結合を取り扱います。

結合 Edit

セルの結合と結合の解除には merge メソッドを使用します。

Sub merge_1
Dim oDoc As Object
Dim oSheet As Object
Dim oCellRange As Object
  oDoc = ThisComponent
  oSheet = oDoc.getSheets().getByIndex(0)
  oCellRange = oSheet.getCellRangeByName( "B2:D5" )
  oCellRange.merge( true )
  MsgBox "merged"
  oCellRange.merge( false )
End Sub

merge メソッドの引数に true を指定するだけでセルを結合します。解除するには, 引数に false を指定します。 セルの結合が使用できるのは,セル範囲とシートオブジェクトです。

判断 Edit

セルが結合しているかどうかを判断するには getIsMerged メソッドを使用します。

Sub merge_2
Dim oDoc As Object
Dim oSheet As Object
Dim oCellRange As Object
  oDoc = ThisComponent
  oSheet = oDoc.getSheets().getByIndex(0)
  oCellRange = oSheet.getCellRangeByName( "B2:D5" )
  oCellRange.merge( true )
  MsgBox oCellRange.getIsMerged()
End Sub

セル範囲が結合されているので, true が表示されます。 次のようなコードを実行してみます。

Sub merge_3
Dim oDoc As Object
Dim oSheet As Object
Dim oCellRange As Object
  oDoc = ThisComponent
  oSheet = oDoc.getSheets().getByIndex(0)
  oCellRange = oSheet.getCellRangeByName( "B2:D5" )
  oCellRange.merge( true )
  MsgBox oSheet.getIsMerged()
End Sub

シートの一部分が結合されているので true が表示されます。

結合範囲 Edit

getIsMerged メソッドではセル範囲が結合されているかどうかの判断しかできません。そのかわり,セルカーソルを使用することでセルの結合範囲を調べることができます。
次のコードではシートのセルを結合し,その結合範囲を調べています。

Sub merge_5
Dim oSheet As Object
Dim oCursor As Object
Dim oRangeAddress As New com.sun.star.table.CellRangeAddress

  oSheet =ThisComponent.Sheets(0)
  oSheet.getCellRangeByPosition( 0, 0, 1, 1 ).merge( true )
  oCursor = oSheet.createCursor()
  oCursor.gotoStart()
  oCursor.collapseToMergedArea()
  oRangeAddress = oCursor.getRangeAddress()
  MsgBox "startcol: " & oRangeAddress.StartColumn & _
    "endcol: " & oRangeAddress.EndColumn  
End Sub

その他 Edit

結合したときに右側にあるセルの内容は結合する前のままになります。

Sub merge_4
Dim oDoc As Object
Dim oSheet As Object
Dim oCellRange As Object
Dim aString( 0, 2 ) As String
  aString() = Array( Array( "cell", "CELL" ) )
  oDoc = ThisComponent
  oSheet = oDoc.getSheets().getByIndex(0)
  oCellRange = oSheet.getCellRangeByName( "A1:B1" )
  oCellRange.setDataArray( aString() )
  oCellRange.merge( true )
  MsgBox oSheet.getCellRangeByName( "B1" ).getString()
End Sub

上のコードのように文字列などを取得することもできます。


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