von F3K Total » Di, 12.08.2014 23:13
Moin,
Karolus hat völlig Recht, warum und wofür du sieben Kopien brauchst, sagst Du nicht, deshalb entgeht dir vermutlich eine viel einfachere Lösung.
Nun hatte ich das Makro schon fertig, darum lade ich es trotzdem hoch.
Markiere den zu vervielfältigenden Zellbereich (im Beispiel A2:C9), lass das Makro laufen, gibt die gewünschte Anzahl ein und OK
Code: Alles auswählen
Sub S_copy_seven_rows_Selection
Dim nCopies as integer
nCopies = inputbox("Wie oft soll jede Zeile dargestellt werden","Dateneingabe",7)
oselection = Thiscomponent.currentselection
oRangeAddress = oselection.RangeAddress
aDataarray = oselection.DataArray
nRows = uBound(aDataarray)
nNewRows = (nRows + 1) * nCopies
Redim Preserve aDataarray(nNewRows)
nCounter = 0
for i = nRows to 0 step -1
aRowDataarray = aDataarray(i)
for k = 0 to nCopies - 1
aDataarray(nNewRows-nCounter) = aRowDataarray
nCounter = nCounter + 1
next k
next i
oSheet = oselection.Spreadsheet
oRange = oSheet.getcellrangebyposition(oRangeAddress.Startcolumn,oRangeAddress.StartRow,oRangeAddress.Endcolumn,oRangeAddress.StartRow + nNewRows)
oRange.setDataArray(aDataarray)
End Sub
Anbei eine Beispieldatei
- Dateianhänge
-
- Copy_n_Rows.ods
- (11.54 KiB) 114-mal heruntergeladen
Moin,
Karolus hat völlig Recht, warum und wofür du sieben Kopien brauchst, sagst Du nicht, deshalb entgeht dir vermutlich eine viel einfachere Lösung.
Nun hatte ich das Makro schon fertig, darum lade ich es trotzdem hoch.
Markiere den zu vervielfältigenden Zellbereich (im Beispiel A2:C9), lass das Makro laufen, gibt die gewünschte Anzahl ein und OK
[code]Sub S_copy_seven_rows_Selection
Dim nCopies as integer
nCopies = inputbox("Wie oft soll jede Zeile dargestellt werden","Dateneingabe",7)
oselection = Thiscomponent.currentselection
oRangeAddress = oselection.RangeAddress
aDataarray = oselection.DataArray
nRows = uBound(aDataarray)
nNewRows = (nRows + 1) * nCopies
Redim Preserve aDataarray(nNewRows)
nCounter = 0
for i = nRows to 0 step -1
aRowDataarray = aDataarray(i)
for k = 0 to nCopies - 1
aDataarray(nNewRows-nCounter) = aRowDataarray
nCounter = nCounter + 1
next k
next i
oSheet = oselection.Spreadsheet
oRange = oSheet.getcellrangebyposition(oRangeAddress.Startcolumn,oRangeAddress.StartRow,oRangeAddress.Endcolumn,oRangeAddress.StartRow + nNewRows)
oRange.setDataArray(aDataarray)
End Sub[/code]Anbei eine Beispieldatei