Un informazione in merito ad una procedura macro.
in un foglio di calcolo ho una serie elenco sui quali, in un altro foglio, seguo delle ricerche ed estrapolo dei dati salvati riga per riga, che utilizzo poi in un terzo foglio.
per non continuare a copiare e quindi duplicare dati, nel secondo foglio, ho fatto in modo che sulla riga dove inserisco i dati per effettuare la ricerca, mi venga restituito, invece dei dati, il numero della riga indice del primo foglio.
La mia idea era quindi, nel terzo foglio, dove preparo i dati per la stampa, recuperare i valori dal primo foglio, basandomi sul numero indice che avevo precedentemente salvato nel secondo foglio.
Tutto questo funziona, tranne il fatto che se nel secondo foglio lui mi salva CORRETTAMENTE il numero di riga ex. 10, nel terzo foglio mi stampa la riga 11.
Non riesco ad allegare il file originale perché contiene dati sensibili ed in realtà lui non si basa solo su 1 foglio iniziale su cui fare le ricerche ma su 10 fogli differenti, infatti nel secondo foglio, dove salvo il riferimento all'indice, salvo anche il nome del foglio relativo con il formato NomeFoglio.Numeroriga
Questa procedura viene eseguita nel secondo foglio con la variabile SH relativa al secondo foglio.
Codice: Seleziona tutto
Sub _ReadWriteArt
Match="B2:B9999" ' campo di ricerca in colonna per la funzione match
DSN=ThisComponent.Sheets.getByName(SheetName)'assegno alla variabile DSN, l'oggetto foglio su cui recuperare i dati
MRange = DSN.getCellRangeByName(Match) ' per la funzione match genere il suo campo di ricerca nel foglio desiderato (solo 1 colonna)
Row=SVC.callFunction("MATCH", Array(Item, MRange,0))'assegno alla variabile Row, il numero della riga trovata
'msgbox Row '''' trovata la riga corretta
SH.getCellByposition(CL+8,RG).String=SheetName+"."+(Row+1) 'assgno alla colonna 8 l indirizzo originale dell'articolo nel formato NomeFoglio.Numeroriga
End Sub
Questa è la fusione presente nel 3° foglio che si occupa di stampare i dati, letti nel secondo foglio salvati dalla procedura sopra, relativi alla riga del primo foglio
per funzionare funziona, ma la riga
estratti=DSN.getCellByposition(3,Row(1)).String 'estraggo il peso. 'estraggo una specifica cella dalla riga interessata
mi estrae i dati della riga successiva a quella indicata: chiesta la 10 (msgbox (Row(1)) ---> stampa 10 ). ottengo la 11
Codice: Seleziona tutto
Sub _EstraiDati(riga)
if IndRif.String <> 0 then 'leggo dal secondo foglio la cella contenente l'indirizzo di riferimento nel formato NomeFoglio.Numeroriga
Row=split(IndRif.string,".") 'spezzo l'indirizzo per avere separati il nome del foglio ed il numero della riga
DSN=ThisComponent.Sheets.getByName(Row(0) 'assegno alla variabile DSN il foglio dal quale estrarre i dati
estratti=DSN.getCellByposition(3,Row(1)).String 'estraggo il peso. 'estraggo una specifica cella dalla riga interessata
end if
End Sub
Qualcuno di voi ha qualche suggerimento?
Grazie