Dim c as long, r as long ' integer je chyba, jeho rozsah nepokrývá rozsah listu - zkuste do e1 napsat 40000
Cell.value = "Ahoj" ' string sebere vše jako text, value je lepší
Cell.value = 123
Cell.formula = 123 ' Také lze použít
Celý blok vkládá metoda setDataArray, její použití je trochu komplikované. Tuším, že kopírování celého bloku jste nechtěl, použijte tedy ofset v cyklu přes kopírované pole
for i = 0 to 9
Cell.Offset(0, i).Value = CellZdroj.Offset(0, i).Value
next i
Pokud potřebujete přeci jen vkládat pole, je tu malá komlikace s vytvořením tohoto pole. Pro mne nejjednodušší je pole vytvořit metodou getdataarrray.
...
Sheet = thisComponent.sheets.getByName("List1")
SheetZdroj = thisComponent.sheets.getByName("List2")
bunka =sheet.getCellRangeByName("E1")
r = bunka.value
Cell = Sheet.getCellRangeByName("A" & r & ":A" & (r+9))
CellZdroj = SheetZdroj.getCellRangeByName("A1:A10")
' Načtu pole hodnot z listu do proměnné Cisla
Cisla = CellZdroj.getDataArray
' toto lze vynechat
for i = 0 to 9
Cisla(i)(0) = Cisla(i)(0) ' pokud je třeba něco opravit, musí se adresovat takto
next i
' Vložím obsah proměnné Cisla do listu
Cell.setDataArray(Cisla)
....
Pokud nechcete nic upravovat jen zkopírovat hodnoty:
Cell.setDataArray(CellZdroj.getDataArray)
Nebo vzorce
Cell.setFormulaArray(CellZdroj.getFormulaArray)