Come vengono contate le righe?

Creare una macro - Scrivere uno script - Usare le API
Rispondi
ilkappa
Messaggi: 39
Iscritto il: mercoledì 1 febbraio 2017, 12:52

Come vengono contate le righe?

Messaggio da ilkappa »

Ciao a tutti.
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
OpenOffice 3.1 su Ubuntu 16.04
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Come vengono contate le righe?

Messaggio da Eramad »

I riferimenti nelle macro a celle e colonne partono a contare da 0

Quindi la riga 1 e la colonna A sono 0

Comunque non capisco un paio di cose:

Codice: Seleziona tutto

DSN=ThisComponent.Sheets.getByName(Row(0)
mi sfugge il significato

e non capisco dove gli dai i dati...quindi non capisco dove c'è l'aumento di 1
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
ilkappa
Messaggi: 39
Iscritto il: mercoledì 1 febbraio 2017, 12:52

Re: Come vengono contate le righe?

Messaggio da ilkappa »

Grazie per l'attenzione e per la risposta:

Codice: Seleziona tutto

DSN=ThisComponent.Sheets.getByName(Row(0)
Questa funzione assegna alla variabile DSN il foglio da utilizzare: semplicemente una scorciatoia.

Ho risolto (a quanto pare) andando a tramutare la stringa Row(1), cioè il numero di riferimento alla riga del primo foglio,
in un integer e quindi ho sottratto a quel valore 1, al momento della stampa, cosi mi stampa esattamente la riga interessata.

Per ora... grazie.
OpenOffice 3.1 su Ubuntu 16.04
Avatar utente
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Come vengono contate le righe?

Messaggio da Eramad »

Ma scusa....non manca una parentesi a quella riga?
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Come vengono contate le righe?

Messaggio da patel »

e poi la funzione row non esiste, l'hai creata tu ?
-------------------
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
ilkappa
Messaggi: 39
Iscritto il: mercoledì 1 febbraio 2017, 12:52

Re: Come vengono contate le righe?

Messaggio da ilkappa »

Eramad ha scritto:Ma scusa....non manca una parentesi a quella riga?
Si, manca una riga, errore di copia
e poi la funzione row non esiste, l'hai creata tu ?
row non e una funzione ma un .... array.
Forse dovevo scriverlo minuscolo.
OpenOffice 3.1 su Ubuntu 16.04
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Come vengono contate le righe?

Messaggio da patel »

pe farti capire dagli altri dovresti usare nomi più indicativi per le variabili, as es. arrRows invece di row
Ultima modifica di patel il sabato 16 marzo 2019, 17:43, modificato 1 volta in totale.
-------------------
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
Eramad
Volontario
Volontario
Messaggi: 278
Iscritto il: martedì 10 aprile 2018, 14:56
Località: Pistoia

Re: Come vengono contate le righe?

Messaggio da Eramad »

O ancora meglio postare il file con la macro scritta per intero così si vedono tutte le variabili e tutti i passaggi.

Comunque, se hai risolto, puoi mettere [Risolto] nel titolo
Apache OpenOffice 4.1.5 su Windows 10

Se hai risolto il problema, ricordati di aggiungere [RISOLTO]: viewtopic.php?f=9&t=5661
Rispondi