von bst » Fr, 18.02.2011 08:55
Morgen,
Du könntest das mal so versuchen. Das Ergebnis wird rechts neben die Quelldaten kopiert.
Den Code in ein Modul kopieren und dann das Makro Main ausführen.
cu, Bernd
--
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
dim oSheet as Object, oLastCell as Object, iMaxRow as Long, iMaxCol as Long
dim i as Long, j As Long, k as Long
oSheet = ThisComponent.CurrentController.getActiveSheet()
oLastCell = getLastCell(oSheet)
iMaxRow = oLastCell.endRow
iMaxCol = oLastCell.endColumn
k = 0
for i = 1 to iMaxRow
for j = 0 To iMaxCol
prcCopyValue oSheet.getCellByPosition(j, 0), oSheet.getCellByPosition(iMaxCol + 2, k)
prcCopyValue oSheet.getCellByPosition(j, i), oSheet.getCellByPosition(iMaxCol + 3, k)
k = k + 1
next
next
End Sub
Function getLastCell(Optional oStartSheet as object) as object
dim oSheet as object
dim oCellCursor as object
if isMissing(oStartSheet) Then
oSheet = ThisComponent.CurrentController.ActiveSheet
else
oSheet = oStartSheet
endif
oCellCursor = oSheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
getLastCell = oCellCursor.getRangeAddress()
End Function
Sub prcCopyValue(oSrcRange as Object, oDstRange as Object)
dim arData as Variant
arData = oSrcRange.getDataArray()
oDstRange.setDataArray(arData)
End Sub
Morgen,
Du könntest das mal so versuchen. Das Ergebnis wird rechts neben die Quelldaten kopiert.
Den Code in ein Modul kopieren und dann das Makro Main ausführen.
cu, Bernd
--
[code]REM ***** BASIC *****
Sub Main
dim oSheet as Object, oLastCell as Object, iMaxRow as Long, iMaxCol as Long
dim i as Long, j As Long, k as Long
oSheet = ThisComponent.CurrentController.getActiveSheet()
oLastCell = getLastCell(oSheet)
iMaxRow = oLastCell.endRow
iMaxCol = oLastCell.endColumn
k = 0
for i = 1 to iMaxRow
for j = 0 To iMaxCol
prcCopyValue oSheet.getCellByPosition(j, 0), oSheet.getCellByPosition(iMaxCol + 2, k)
prcCopyValue oSheet.getCellByPosition(j, i), oSheet.getCellByPosition(iMaxCol + 3, k)
k = k + 1
next
next
End Sub
Function getLastCell(Optional oStartSheet as object) as object
dim oSheet as object
dim oCellCursor as object
if isMissing(oStartSheet) Then
oSheet = ThisComponent.CurrentController.ActiveSheet
else
oSheet = oStartSheet
endif
oCellCursor = oSheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
getLastCell = oCellCursor.getRangeAddress()
End Function
Sub prcCopyValue(oSrcRange as Object, oDstRange as Object)
dim arData as Variant
arData = oSrcRange.getDataArray()
oDstRange.setDataArray(arData)
End Sub
[/code]