ripetere macro n volte

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Francesco90
Messaggi: 73
Iscritto il: mercoledì 2 agosto 2017, 23:33

ripetere macro n volte

Messaggio da Francesco90 »

Ciao ragazzi ho la necessita di copiare una formula molte volte da una cella a quella in basso. non posso trascinarla per cui ho bisogno di una macro.
Ne ho registrata una che fa una volta la copia. ho provato a modificare il codice aggiungedo un for ma non va...

Codice: Seleziona tutto

REM  *****  BASIC  *****

Sub Main

End Sub


sub copia_in_basso_cella
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
For i=1 to 5[color=#0000BF][b] (riga che ho aggiunto per far ciclare la macro)[/b][/color]
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
Next i  [b][color=#0000BF](riga che ho aggiunto per far ciclare la macro)[/color][/b]

end sub
macro_n_volte.ods
(10.89 KiB) Scaricato 90 volte
Windows8.1 Libreoffice 6.3.4
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: ripetere macro n volte

Messaggio da patel »

Il registratore di macro produce codice poco comprensibile e difficilmente modificabile, nel tuo caso inoltre non potrebbe funzionare comunque perche ripetere n volte la stessa operazione copierebbe la cella n volte nella stessa cella, prova questa

Codice: Seleziona tutto

Sub fill
oSheet = ThisComponent.Sheets(0)
n = 8
oRange = oSheet.getCellRangeByName("A1:A" & n)
oRange.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM, 1)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Francesco90
Messaggi: 73
Iscritto il: mercoledì 2 agosto 2017, 23:33

Re: ripetere macro n volte

Messaggio da Francesco90 »

Ti spiego quello che devo fare perché non riesco a far funzionare la macro.
Devo copiare questa formula che è da confermare matriciale verso il basso 620 volte

Codice: Seleziona tutto

=SE.ERRORE(INDICE(INDIRETTO(SINISTRA($D$8;3)&".A5:A301");PICCOLO(SE(SCARTO(INDIRETTO(SINISTRA($D$8;3)&".C4");1;CONFRONTA($A13;INDIRETTO(SINISTRA($D$8;3)&".D4:AH4");0);CONTA.VALORI(INDIRETTO(SINISTRA($D$8;3)&".A5:A301")))=CERCA.VERT( $D$9 ; legenda_serv!$A$2:$B$20 ; 2 ; 0 );RIF.RIGA($A$5:$A$301)-4);SE(RESTO(RIF.RIGA($A1);4)=0;4;RESTO(RIF.RIGA($A1);4))));"")
Come posso fare? Grazie
Windows8.1 Libreoffice 6.3.4
Rispondi