[Risolto] Rendere operativa una macro con 2 ranges anzichè uno

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

[Risolto] Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Salve a tutti. Per un determinato tipo di lavoro,ho bisogno di modificare questa macro affinchè essa possa lavorare su 2 intervalli di celle anzichè uno soltanto. La macro originale è questa,col range attualmente operativo "E67:I122" che funziona in modo regolare

Codice: Seleziona tutto

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

sub SomarRange
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 ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "E67:I122"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$E$3"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(5) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "VD"
args4(1).Name = "FormulaCommand"
args4(1).Value = 1
args4(2).Name = "SkipEmptyCells"
args4(2).Value = false
args4(3).Name = "Transpose"
args4(3).Value = false
args4(4).Name = "AsLink"
args4(4).Value = false
args4(5).Name = "MoveMode"
args4(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args4())

end sub

All'intervallo : args1(0).Value = "E67:I122" devo aggiungere il range "M67:Q122". Ho provato a scrivere e modificare così :

args1(0).Value = ("E67:I122,M67:Q122")

ma non va bene. Non so come fare. Una buona serata
Ultima modifica di Novarest il venerdì 28 luglio 2023, 16:59, modificato 2 volte in totale.
Libre Office 7.6.1.2
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da patel »

Il difetto delle macro registrate è che sono poco comprensibili e difficili a modificare, spiega bene cosa vuoi ottenere ed allega un file di esempio
-------------------
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
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Provo tramite file a rendere più chiara la questione. In pratica premendo il pulsante macro "Somar Range" l'intervallo di numeri che sta nel range
C52-E94 va a sommarsi automaticamente ai valori che stanno nel range C3-E45. Bene,la stessa cosa vorrei farla con l'intervallo G52-I94 che attraverso
lo stesso pulsante andrebbe a unirsi in somma con G3-I45. Da qui perciò la necessità di dover per così dire....sdoppiare l'operatività della macro. Aggiungere quindi al codice : args1(0).Value = "$C$52:$E$94",anche il blocco :"$G$52:$I$94",e il problema è non so come si trascriva correttamente il tutto. In questo file ho solo modificato i ranges delle celle ma la sostanza non cambia. Grazie
Allegati
prova per open office.ods
(21.46 KiB) Scaricato 78 volte
Libre Office 7.6.1.2
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da patel »

Non mi sembra che la tua macro sommi, si limita a copiare un range su un altro o mi sbaglio ?
-------------------
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
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Praticamente copia e somma allo stesso tempo. Cliccando su "Somar Range" ti accorgi che copia ma somma contemporaneamente
Ultima modifica di Novarest il venerdì 28 luglio 2023, 12:51, modificato 1 volta in totale.
Libre Office 7.6.1.2
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da patel »

Come hai fatto a registrarla ?
-------------------
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
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

L'ho copiata nella finestra e poi l'ho salvata. Me l'ha suggerita un mio amico che anche lui non sa come sdoppiare l'operatività
Libre Office 7.6.1.2
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da patel »

Il modo più semplice è farne un'altra con i range cambiati, ma è un arrendersi per non aver capito come funziona.
-------------------
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
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Riesci a modificarmela per favore ?
Libre Office 7.6.1.2
Avatar utente
Biagio91
Messaggi: 244
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Biagio91 »

Ciao,
La soluzione che ti propongo è di base sbagliata......ma se non ti interessa proprio capire il funzionamento della macro che hai registrato, e ti funziona già correttamente.... potresti semplicemente copiare e incollare il tuo codice in un'altra macro, modificarne i range e poi dalla macro principale chiamare la seconda macro:

Codice: Seleziona tutto

sub SomarRange
'codice eseguito al click sul pulsante
Call SomarRange1 'chiamata alla seconda macro 
End Sub

sub SomarRange1
'Codice copiato dalla prima macro e riadattato con i range che ti interessano
End sub
Se non ho capito male l'intento è quello di sommare dei nuovi dati a dei dati di riepilogo che sono la somma dei dati dei precedenti inserimenti.

Grazie mille
Ciao
Ultima modifica di Biagio91 il venerdì 28 luglio 2023, 14:52, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Ciao. Scusa,a parte la modifica dei ranges,ok ma il tuo codice risulta poi come prima o come seconda macro ? Hai capito bene,l'intento è proprio quello di sommare dei nuovi dati a dei dati di riepilogo che sono la somma dei dati dei precedenti inserimenti
Libre Office 7.6.1.2
Avatar utente
Biagio91
Messaggi: 244
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Biagio91 »

Va inserita come una ulteriore macro
Prima macro

Codice: Seleziona tutto

sub SomarRange '<- inizio
      'codice eseguito al click sul pulsante
      Call SomarRange1 'chiamata alla seconda macro 
End Sub             '<- fine

Codice: Seleziona tutto

sub SomarRange1 '<- inizio
'Codice copiato dalla prima macro e riadattato con i range che ti interessano
End sub               '< fine
P.S. hai già provato eventualmente con le formule? Così su due piedi mi viene da dire che forse, e sottolineo forse, potresti trovare il modo tramite qualche colonna di appoggio per eseguire le somme che ti interessano e copiarne poi i valori su un foglio "Riepilogo"

Più chiaro ora? la macro esegue le istruzioni riga per riga, quindi in base all'ordine di scrittura vengono eseguite le istruzioni.
La chiamata al nuovo codice la devi inserire subito prima della fine della prima macro.
Purtroppo però se queste nozioni ti suonano strane forse è meglio che ti vedi un attimo un poco di esempi tutorials e fai qualche prova.
Presumo che il tuo file si possa compilare anche senza macro sai, con qualche copia incolla e qualche formula al posto giusto

Ti allego un semplice esempio, vedi foglio2
Allegati
prova per open office (1).ods
(14.62 KiB) Scaricato 71 volte
Ultima modifica di Biagio91 il venerdì 28 luglio 2023, 15:11, modificato 1 volta in totale.
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Ok,con le formule potrei provare. Adesso comunque inserisco i tuoi 2 codici come macro principale
Libre Office 7.6.1.2
Avatar utente
Biagio91
Messaggi: 244
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Biagio91 »

Vedi il messaggio precedente che l'ho editato aggiungendoti un esempio
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Va bene,provo con le formule,grazie ma spiegami ancora una cosa per favore : cosa c'è di sbagliato in questo codice ?

args1(0).Value = ("E67:I122,M67:Q122")

Se metto solo : args1(0).Value = "E67:I122 " la macro funziona alla grande.

Scrivendo e aggiungendo anche il range M67:Q122,e quindi trasformando il codice così :

args1(0).Value = ("E67:I122,M67:Q122"),non funziona più. Come andrebbe aggiunto il secondo intervallo ?
Libre Office 7.6.1.2
Avatar utente
Biagio91
Messaggi: 244
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Biagio91 »

Stai andando a modificare una cosa che funziona, registrata dal programma, senza sapere cosa stai facendo.
.....Se proprio proprio vuoi usare le macro.....crea un'altra macro copia incolla la prima e dalla prima chiama la seconda cambiandone i range, come già suggerito.
Nemmeno sai cos'è una subroutine come aprirla e chiuderla......non incaponirti che devi per forza modificare quella macro registrata, che magari nemmeno si può fare.....rischi di perderci una giornata per non imparare nulla o almeno per non avere una nozione che puoi riutilizzare.
Fai sapere se risolvi
Come indicare "Risolto" un argomento

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Ho creato le macro come hai detto tu. Funziona,grazie e scusa del disturbo. Sul doppio intervallo non ci vado a sbattere la testa. Metterò risolto
Libre Office 7.6.1.2
Avatar utente
Biagio91
Messaggi: 244
Iscritto il: mercoledì 3 febbraio 2021, 20:25

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Biagio91 »

Nessun disturbo figurati.
L'importante è che hai Risolto.

Grazie mille
Ciao
OpenOffice 4.1.8 su Windows 7-10
::::May we meet again into the matrix::::
Novarest
Messaggi: 62
Iscritto il: giovedì 6 aprile 2023, 7:36

Re: Rendere operativa una macro con 2 ranges anzichè uno

Messaggio da Novarest »

Ciao,grazie
Libre Office 7.6.1.2
Rispondi