*セル範囲の結合 [#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 上のコードのように文字列などを取得することもできます。 |