08/06/20 04:14:11
>>653
あー、適当。一回しか試してない。下側のセルは削除、上移動。選択範囲のチェック、速度も一応考慮
と思ったけど、UBound(sData) は一回だけでいいわ
Sub MergeRowStrings
oDoc = ThisComponent
If NOT oDoc.supportsService( _
"com.sun.star.sheet.SpreadsheetDocument") Then Exit Sub
oSelection = oDoc.getCurrentSelection()
If oSelection.supportsService("com.sun.star.sheet.SheetCellRange") Then
aAddress = oSelection.getRangeAddress()
nColNum = aAddress.EndColumn - aAddress.StartColumn
Dim sTxt(nColNum) As String
sDataArr = oSelection.getDataArray()
For i = 0 To UBound(sDataArr) step 1
sData = sDataArr(i)
For j = 0 To UBound(sData) step 1
sTxt(j) = sTxt(j) & sData(j)
Next
Next
oSelection.getCellRangeByPosition(0,0,nColNum,0).setDataArray( Array(sTxt) )
aAddress.StartRow = aAddress.StartRow +1
oSelection.getSpreadsheet().removeRange( _
aAddress, com.sun.star.sheet.CellDeleteMode.UP )
End If
End Sub