Pagina 1 di 1
[Risolto] Rendere operativa una macro con 2 ranges anzichè uno
Inviato: giovedì 27 luglio 2023, 21:16
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 10:11
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 10:59
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:39
da patel
Non mi sembra che la tua macro sommi, si limita a copiare un range su un altro o mi sbaglio ?
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:48
da Novarest
Praticamente copia e somma allo stesso tempo. Cliccando su "Somar Range" ti accorgi che copia ma somma contemporaneamente
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:50
da patel
Come hai fatto a registrarla ?
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:52
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à
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:57
da patel
Il modo più semplice è farne un'altra con i range cambiati, ma è un arrendersi per non aver capito come funziona.
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 12:58
da Novarest
Riesci a modificarmela per favore ?
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 14:42
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 14:48
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 14:56
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 15:02
da Novarest
Ok,con le formule potrei provare. Adesso comunque inserisco i tuoi 2 codici come macro principale
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 15:12
da Biagio91
Vedi il messaggio precedente che l'ho editato aggiungendoti un esempio
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 15:24
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 ?
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 16:33
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 16:40
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
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 16:49
da Biagio91
Nessun disturbo figurati.
L'importante è che hai Risolto.
Grazie mille
Ciao
Re: Rendere operativa una macro con 2 ranges anzichè uno
Inviato: venerdì 28 luglio 2023, 16:55
da Novarest
Ciao,grazie