Top > OOoBasic > Calc > merge
*セル範囲の結合 [#r56df8e2]
セル範囲の結合を取り扱います。

#contents

**結合 [#k951c094]
セルの結合と結合の解除には ''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 を指定します。
セルの結合が使用できるのは,セル範囲とシートオブジェクトです。 

**判断 [#vad7e82c]

セルが結合しているかどうかを判断するには ''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 が表示されます。

**結合範囲 [#k0cf7bd0]
''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

**その他 [#u397e9eb]
結合したときに右側にあるセルの内容は結合する前のままになります。

 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