Top > OOobbs2 > 48
** [[OOobbs2/48]] [#i6904214]
-''サマリ'': 結合したセルの列幅を取得したい
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[sato]]
-''投稿日'': 2007-07-19 (木) 14:36:25
*** 質問 [#o39008d8]
結合(横)したセルの列幅を知りたいのですが、最初の列幅しか取得できません。2列を結合して列数を取得しても1列しか取得できませんでした。よろしくお願いします。
*** 回答 [#a53823a6]
- セルカーソルを使わないといけないみたいです。

以下は選択範囲がセルで結合されているとき、トータルのセル幅を計算します。

''collapseToMergedArea'' メソッドでセルカーソルを結合されたセルの範囲に広げます。メソッドを呼び出した前後でセルカーソルの RangeAddress プロパティを参照すれば範囲が確認できます。

 Sub Main
 Dim oDoc As Object
   oDoc = ThisComponent
   oSelection = oDoc.getCurrentController().Selection
   If oSelection.supportsService("com.sun.star.sheet.SheetCell") AND _
     oSelection.getIsMerged() Then
     oSheet = oSelection.Spreadsheet
     oCursor = oSheet.createCursorByRange(oSelection)
     oCursor.collapseToMergedArea()
     nWidth = GetColumnsWidth(oCursor.Columns)
   End If
 End Sub
 
 Function GetColumnsWidth( oColumns As Object )
 Dim nTotal As Long
   For i = 0 To oColumns.getCount() -1
     nTotal = nTotal + oColumns.getByIndex(i).Width
   Next i
   GetColumnsWidth = nTotal
 End Function

-セルカーソルの取得
--http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XSpreadsheet.html
-セルカーソルサービス
--http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/SheetCellCursor.html
-セルカーソルのメソッド
--http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XSheetCellCursor.html
-セルカーソルの他のメソッドとサービス
-http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XUsedAreaCursor.html
http://api.openoffice.org/docs/common/ref/com/sun/star/table/XCellCursor.html

-- [[はにゃ?]] &new{2007-07-19 (木) 15:28:17};
- はにゃ?さん ありがとうございます。実は、セル幅に文字を均等に割り付けるマクロに挑戦しています。 -- [[sato]] &new{2007-07-20 (金) 10:27:27};

#comment
*** 感想,コメント,メモ [#aa22b4d4]

#comment

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