[RISOLTO] Definire Area di celle (CTRL + F3)

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Logical Passion
Messaggi: 16
Iscritto il: giovedì 13 settembre 2018, 11:07

[RISOLTO] Definire Area di celle (CTRL + F3)

Messaggio da Logical Passion »

Buongiorno,

premetto che la ricerca che ho effettuato non produce nessuna occorrenza per questo argomento

è possibile che una macro definisca un'area di celle (con "definire un'area di celle" intendo ottenere lo stesso risultato della procedura che in Calc si attiva con CTRL + F3)?

Dovrebbe (forse!) essere la procedura di cui si parla qui https://www.openoffice.org/api/docs/com ... cePosition ma non capisco come si metta in pratica quanto vi è scritto

Grazie
Ultima modifica di Logical Passion il domenica 23 settembre 2018, 12:56, modificato 1 volta in totale.
Logica e Metodo attributi della Ragione,
Intuizione ed Immaginazione attributi della Genialità,
Passione ed Amore la loro energia.

OpenOffice 4.1.5 Windows Seven
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Definire Area di celle (CTRL + F3)

Messaggio da patel »

prova questa

Codice: Seleziona tutto

sub definisciNome 
   rifa_nomearea ("Foglio1", "$G$10:$L$20" , "prova")
end sub

SUB rifa_nomearea (sSheet as string, sRange as string, sName as string)
   sPath = "$'" & sSheet & "'." & sRange
   oRanges = ThisComponent.NamedRanges
      oCellAddress = ThisComponent.Sheets.getByName(sSheet).getCellRangeByName("A1").getCellAddress()
   If oRanges.hasByName(sName) Then oRanges.removeByName(sName)
   oRanges.addNewByName(sName,sPath,oCellAddress,0)
end sub
se intendi imparare a programmare qui troverai molti esempi http://www.pitonyak.org/oo.php
-------------------
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
Logical Passion
Messaggi: 16
Iscritto il: giovedì 13 settembre 2018, 11:07

Re: Definire Area di celle (CTRL + F3)

Messaggio da Logical Passion »

Funziona e svolge esattamente ciò che intendevo, non sembra però possibile definire un'area contenente celle discontinue.

A questo punto non so se indicare l'argomento come [RISOLTO] perchè ciò che ho chiesto mi è stato prontamente indicato (Grazie!) ma se cambio titolo probabilmente passa inosservato il discorso di area con celle discontinue.

Ringrazio Patel anche per il link agli esempi di pitonyak
Logica e Metodo attributi della Ragione,
Intuizione ed Immaginazione attributi della Genialità,
Passione ed Amore la loro energia.

OpenOffice 4.1.5 Windows Seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Definire Area di celle (CTRL + F3)

Messaggio da unlucky83 »

Perchè con (CTRL + F3) riesci a definire area con celle discontinue?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Logical Passion
Messaggi: 16
Iscritto il: giovedì 13 settembre 2018, 11:07

Re: Definire Area di celle (CTRL + F3)

Messaggio da Logical Passion »

Si, è possibile.

Nella finestra di dialogo che si apre premendo CTRL+F3, a sinistra del tasto per attivare la selezione tramite mouse, c'è un campo per l'inserimento testuale.
E' necessario digitare in esso, avendo l'accortezza di racchiuderla fra due parentesi, tutta la sequenza di sottoaree divise con il punto e virgola.

AreaDiscontinua($A$1:$B$2;$C$3:$D$4)
L'espressione viene accettata e ad una successiva apertura della finestra "Definisci Nomi" (CTRL+F3) il punto e virgola vengono sostituiti da un tilde.

La conferma che l'area disgiunta funzioni, oltre che essere accettata, è fornita dalla formula =CONTA.VUOTE(AreaDiscontinua) che restituisce il valore 8.

Oltre le due aree discontinue è necessario digitare direttamente il tilde ~ perchè l'inserimento con il punto e virgola non funziona (mistero!)

E' possibile aggiungere più aree su più fogli:
AreaDiscontinua($Foglio1.$A$1:$B$2~$Foglio1.$C$3:$D$4~$Foglio2.$E$5:$F$6). ---> =CONTA.VUOTE(AreaDiscontinua) restituisce il valore 12.

(testato fino a 7 fogli e 7 aree discontinue)
Logica e Metodo attributi della Ragione,
Intuizione ed Immaginazione attributi della Genialità,
Passione ed Amore la loro energia.

OpenOffice 4.1.5 Windows Seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Definire Area di celle (CTRL + F3)

Messaggio da unlucky83 »

Ottima spiegazione, non sapevo si potesse fare. Prova questa versione allora:

Codice: Seleziona tutto

sub definisciNome2
   rifa_discontinua ("provola2","($Foglio1.$B$15~$Foglio1.$B$30:$B$35)",ThisComponent)
end Sub

SUB rifa_discontinua (  sName as string,sRange as string, oDove As object)
'oDove può essere ThisComponet--> per nome a validità globale; può essere ThisComponent.Sheets(0) --> per nome valido solo nel primo foglio; etc...
   oRanges = oDove.NamedRanges
     If oRanges.hasByName(sName) Then oRanges.removeByName(sName)
  oCellAddress = ThisComponent.Sheets.getByindex(0).getCellRangeByName("A1").getCellAddress()
   oRanges.addNewByName(sName,sRange,oCellAddress, 0)
end Sub
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Definire Area di celle (CTRL + F3)

Messaggio da patel »

Non si smette mai di imparare :super: :bravo:
-------------------
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
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Definire Area di celle (CTRL + F3)

Messaggio da unlucky83 »

Grazie a questa discussione ho scoperto la grande potenzialità di NamedRanges, è possibile associarci anche il testo di una formula, ecco a cosa serve il terzo parametro, a gestire i riferimenti relativi delle funzioni suppongo.

https://wiki.openoffice.org/wiki/Docume ... med_Ranges
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Logical Passion
Messaggi: 16
Iscritto il: giovedì 13 settembre 2018, 11:07

Re: Definire Area di celle (CTRL + F3)

Messaggio da Logical Passion »

Buongiorno, mi scuso per aver tardato nel rispondere. Per alcuni versi fortunatamente, per altri meno, sono stato molto impegnato.

Ringrazio Unlucky per il codice da lui scritto, funziona e non ne avevo dubbi! Lo ringrazio anche per il complimento ricevuto, mi ha fatto molto piacere.
Sono infine lieto questa discussione sia stata spunto per la sua scoperta, anche se, francamente, per ora non capisco di cosa si tratti.

Ora modifico l'oggetto aggiungendo la spunta verde e la dicitura [RISOLTO]

Grazie, buona Domenica
Logica e Metodo attributi della Ragione,
Intuizione ed Immaginazione attributi della Genialità,
Passione ed Amore la loro energia.

OpenOffice 4.1.5 Windows Seven
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: [RISOLTO] Definire Area di celle (CTRL + F3)

Messaggio da unlucky83 »

Per chiarire, si possono salvare in NamedRanges non semplicemente riferimenti a celle, ma anche formule. Usato in maniera opportuna potrebbe essere impiegato in alternativa all’utilizzo di celle di appoggio per fare i calcoli e forse anche per ridurre il testo di formule complesse altrimenti lunghissime
La wiki riporta questo esempio che cito in parte
xNamedRanges.addNewByName("ExampleName", "SUM(G43:G44)", aRefPos, 0);

// use the named range in formulas
xSheet.getCellByPosition(6, 44).setFormula("=ExampleName");
xSheet.getCellByPosition(7, 44).setFormula("=ExampleName");
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Logical Passion
Messaggi: 16
Iscritto il: giovedì 13 settembre 2018, 11:07

Re: [RISOLTO] Definire Area di celle (CTRL + F3)

Messaggio da Logical Passion »

(Fantastic)
Logica e Metodo attributi della Ragione,
Intuizione ed Immaginazione attributi della Genialità,
Passione ed Amore la loro energia.

OpenOffice 4.1.5 Windows Seven
Rispondi