Macro. Inserire righe multiple in Grid con metodo addRows

Ciao ragazzi,
ho una Grid (campo Controllo Tabella), riesco ad inserire singole righe con il metodo addRow, ma non righe multiple con il metodo addRows (ricevo un errore di variable dell’oggetto non impostata.
Ogni aiuto è ben accetto, sono giorni che non riesco a venirne a capo!
Pratiche_test.ods (15.2 KB)

correggi così oDataModel.addRows(temp, temp) REM *** ERRORE (Variabile dell'oggetto non impostata) ***
Non capisco il senso della funzione getRangeFromSheetArray(), puoi direttamente fare così
mySheet = ThisComponent.Sheets.getByName("Pratiche") temp = mySheet.getCellRangeByName("A2:D3").getDataArray oDataModel.addRows(temp, temp)

1 Like

Grazie mille! Non vorrei aggiungere una riga con le intestazioni di colonna (magari quelle le metto nelle intestazioni della Grid…), come posso fare?
Si hai ragione, nella funzione getRangeFromSheetArray() ci sono tre righe che ho dimenticato di eliminare, stavo facendo delle prove… il senso della funzione è quello di selezionare il range dinamicamente, fino a quando ci sono dati (fino alla fine delle righe…)
Luca

Questo non accade se fai come ti ho detto io, nella funzione posizioni il cursore in A1 e il range in questo modo prende pure le intestazioni di colonna, non ha senso selezionare il range dinamicamente, puoi farlo alla fine, anzi non serve proprio selezionare per leggere i dati.

Capito, giusto, inizio da A2 in modo da eliminare le intestazioni di colonna. Ma per il range dinamico non ho ben capito, cosa intendi per farlo alla fine? Per caricare tutte le righe nella grid come faccio a capire dove finisce il range? Quelle righe che ora sono due possono essere anche cento… grazie cmq mi hai risolto!!

Puoi creare il range in questo modo, che sarebbe simile alla tua funzione

mySheet = ThisComponent.Sheets.getByName("Pratiche")
    c = mySheet.createCursor
    c.gotoEndOfUsedArea(false) 
    LastRow = c.RangeAddress.EndRow
    temp = mySheet.getCellRangeByName("A2:D"& LastRow+1).getDataArray
	oDataModel.addRows(temp, temp)

Comunque, se preferisci usare la funzione, va bene pure basta togliere A2.

Perfetto grazie!

1 Like