Pagina 1 di 1

[Risolto] Modifica macro

Inviato: giovedì 10 novembre 2022, 12:09
da solitariopc
Buongiorno a tutti e serena giornata di lavoro.
Nel file allegato ho due tabelle con nomi (ma possono essere anche numeri) dove con una macro che cortesemente (hubert lambert) tempo addietro rese fattibile la mia richiesta di aiuto, dove la tabella nuova veniva aggiunta a una tabella fissa. Quella richiesta cancellava le righe superiori, spostava le celle restanti sopra e aggiungeva le righe della nuova tabella sotto. Quello che chiedo ora è avere la azione opposta, cancellare le righe sotto, spostare giù le celle che restano e aggiungere sopra la nuova tabella. La macro è commentata, e la parte da modificare penso di conoscerla ma non conosco la sintassi per poter operare e tentare io stesso la modifica. Grazie per la risposta che mi sarà data.
Ancora buona una giornata.

Re: Modifica macro

Inviato: giovedì 10 novembre 2022, 21:01
da patel
prova questa

Codice: Seleziona tutto

sub main
	doc = thiscomponent
	tabella_fissa = doc.NamedRanges.getByName("vecchia").ReferredCells
	dati_fissi = tabella_fissa.DataArray
	tabella_nuova = doc.NamedRanges.getByName("nuova").ReferredCells
	dati_nuovi = tabella_nuova.DataArray
	max = ubound(dati_fissi)+1 
	for n = max -1 to 1 step -1
           dati_fissi(n) =  dati_fissi(n-1)
        next
	dati_fissi(0) =  dati_nuovi(0)
	tabella_fissa.setDataArray(dati_fissi)
	tabella_nuova.clearContents(7)
end sub
Ho spostato le righe nella matrice con un ciclo, ma mi piacerebbe sapere se il risultato può essere ottenuto utilizzando REDIM

Re: [Risolto] Modifica macro

Inviato: venerdì 11 novembre 2022, 16:57
da solitariopc
Si. La soluzione e la riscrittura della macro è la soluzione che chiedevo e ringrazio molto Patel per la sua disponibilità. Per una risposta alla curiosità esposta non oso neanche aprire bocca non ho la conoscenza quindi ad altri la parola. Ancora grazie per l'aiuto.

Re: [Risolto] Modifica macro

Inviato: venerdì 11 novembre 2022, 17:17
da patel
La mia domanda ovviamente non era rivolta a te, ti prego di togliere temporaneamente il risolto in attesa di altre soluzioni.

Re: Modifica macro

Inviato: venerdì 11 novembre 2022, 18:16
da charlie
patel ha scritto: venerdì 11 novembre 2022, 17:17 ti prego di togliere temporaneamente il risolto in attesa di altre soluzioni.
L'ho fatto io.

Re: Modifica macro

Inviato: venerdì 11 novembre 2022, 22:09
da Rafkus_pl
patel ha scritto: giovedì 10 novembre 2022, 21:01 Ho spostato le righe nella matrice con un ciclo, ma mi piacerebbe sapere se il risultato può essere ottenuto utilizzando REDIM
Domanda interessante che dovevo controllare... puoi; P.

Codice: Seleziona tutto

sub main2
	doc = thiscomponent
	tabella_fissa = doc.NamedRanges.getByName("vecchia").ReferredCells
	dati_fissi = tabella_fissa.DataArray	
	tabella_nuova = doc.NamedRanges.getByName("nuova").ReferredCells
	dati_nuovi = tabella_nuova.DataArray

	ReDim Preserve  dati_fissi(-1 to 2) 
	dati_fissi(-1) =  dati_nuovi(0)	

	tabella_fissa.setDataArray(dati_fissi)
	tabella_nuova.clearContents(7)
end sub
Riflettendo per una dimensione dell'array sconosciuta:

Codice: Seleziona tutto

sub main3
	doc = thiscomponent
	tabella_fissa = doc.NamedRanges.getByName("vecchia").ReferredCells
	dati_fissi = tabella_fissa.DataArray	
	tabella_nuova = doc.NamedRanges.getByName("nuova").ReferredCells
	dati_nuovi = tabella_nuova.DataArray

	diff = ubound(dati_nuovi)+1
'	min =LBound(dati_fissi) - diff		rem LBound(dati_fissi)=0
	max = ubound(dati_fissi)-diff 
	ReDim Preserve  dati_fissi(-diff to max) 
	for n = -diff to -1
		dati_fissi(n) = dati_nuovi(diff + n)
	next n

	tabella_fissa.setDataArray(dati_fissi)
	tabella_nuova.clearContents(7)
end sub

Re: Modifica macro

Inviato: sabato 12 novembre 2022, 8:50
da patel
Grazie Rafkus, io non osavo provare con indici negativi.
A questo punto penso si possa considerare il problema RISOLTO

Re: Modifica macro

Inviato: lunedì 14 novembre 2022, 7:45
da solitariopc
Come proposto da Patel metto risolto.
Grazie ancora a tutti per l'aiuto reso, faccio mio il ringraziamento di Patel a Rafkus.
Buona giornata.