Pagina 1 di 1

[Risolto] formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 11:25
da zanoneg
Un saluto a tutti,

ecco il problema : con un loop vado ad inserire nella colonna A i nomi dei fogli creati in precedenza.

Poi con la macro che segue vado ad inserire nella colonna B il collegamento per poter richiamare i singoli fogli e fin qui tutto bene.

Quello che non produce risultato è la composizione della formula che con la funzione INDIRETTO mi deve caricare il contenuto di una cella (nell'esempio E8) presente nel foglio il cui nome è nella colonna A. ( ES. =INDIRETTO(A12 & ".E8") che così funziona )

for i=5 to oSheets.count -1
oCell=oSheet.getCellByPosition(1,i+6)
ocell.formulalocal = "=COLLEGAMENTO(k" & i+1+6 & ";L1)" ' --- creo collegamento TUTTO OK

oCell3=oSheet.getCellByPosition(2,i+6)
ocell3.formulalocal = "=INDIRETTO(A" & i+1+6 & ".E8)" ' --- visualizzo sulla colonna C nome relativo all'intestatario del documento da richiamare NON FUNGE

next

Quello che ottengo è : #RIF!
Come posso dunque scrivere in maniera corretta la formula ?
Grazie per l'attenzione e per il Vs eventuale aiuto.

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 13:43
da XLUPOGRIGIOX
Ciao,prova ad allegare un file di esempio con le macro,in modo da aiutare di più ;)

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 14:32
da zanoneg
Ciao grazie Ti allego l'estratto dell'applicativo interessato la macro usata è quella denominata: elenco

Posto anche il codice:

' --------------------------------------

' MACRO ELENCO DA SISTEMARE

' --------------------------------------

Sub elenco

dim oSheets as object , oSheet as object

oDoc=ThisComponent
oSheet =oDoc.CurrentController.ActiveSheet
oSheets=oDoc.Sheets
'oSheet=oSheets(1)
riga_inizio=6 'riga 1
col_inizio=0 'col A

for i=1 to oSheets.count-1

Nomefoglio=oSheets.getbyIndex(i).Name
' print Nomefoglio
oCell=oSheet.getCellByPosition(col_inizio,riga_inizio+i)
oCell2=oSheet.getCellByPosition(10,riga_inizio+i)
oCell.string = Nomefoglio
oCell2.string = "#" + Nomefoglio

oSheet.getCellRangeByName("L1").string = "Apri"

next

for i=1 to oSheets.count -1

oCell=oSheet.getCellByPosition(1,i+6)
ocell.formulalocal = "=COLLEGAMENTO(k" & i+1+6 & ";L1)"


oCell3=oSheet.getCellByPosition(2,i+6)
ocell3.formulalocal = "=INDIRETTO(A" & i+1+6 & ".E8)"

next

End Sub

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 14:53
da XLUPOGRIGIOX
Ciao,nel documento non c'è nessuna macro...sicuro di averla salvata nel documento e non nelle macro personali?

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 15:05
da XLUPOGRIGIOX
Ciao,ho sistemato la macro definendo il nome del foglio e usando un semplice = al posto del tuo indiretto.
Ho salvato la macro nel documento così da non avere problemi in futuro,dimmi se così funziona.

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 15:09
da zanoneg
Scusa proverò a verificare, se non è troppo disturbo puoi inserire la macro che è scritta nel messaggio.
Appena posso poi controllerò.

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 15:12
da XLUPOGRIGIOX
Basterebbe scaricare e provare il file,comunque ti metto la macro modificata:

Codice: Seleziona tutto

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

Sub elenco

dim oSheets as object , oSheet as object 

oDoc=ThisComponent
oSheet =oDoc.CurrentController.ActiveSheet
oSheets=oDoc.Sheets
'oSheet=oSheets(1)
riga_inizio=6 'riga 1 
col_inizio=0 'col A 

for i=1 to oSheets.count-1

Nomefoglio=oSheets.getbyIndex(i).Name
' print Nomefoglio
oCell=oSheet.getCellByPosition(col_inizio,riga_inizio+i)
oCell2=oSheet.getCellByPosition(10,riga_inizio+i)
oCell.string = Nomefoglio
oCell2.string = "#" + Nomefoglio

oSheet.getCellRangeByName("L1").string = "Apri"

next

for i=1 to oSheets.count -1

oCell=oSheet.getCellByPosition(1,i+6)
ocell.formulalocal = "=COLLEGAMENTO(k" & i+1+6 & ";L1)"

fattura = oSheet.getCellByPosition(0,i+6).string 'definisco nome foglio
oCell3=oSheet.getCellByPosition(2,i+6)
ocell3.formulalocal = "=" & fattura & ".E8" 'formula cambiata

next

End Sub

Re: formulalocal con funzione INDIRETTO

Inviato: domenica 12 febbraio 2017, 16:04
da zanoneg
Perfetto Ti ringrazio tanto, ho visto correzioni interessanti le studierò bene.
Allego il risultato ottenuto con la macro memorizzata a livello documento.
Ciao alla prossima