Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vfba excel: selezionare e copiare un range variabile

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vfba excel: selezionare e copiare un range variabile

Postdi karug64 » 28/04/20 21:25

Salve a tutti.

In un'operazione ciclica su un gran numero di file devo selezionare un range di celle (tutte le celle contenenti valori in un foglio) variabile e copiarlo in un altro file.

Considerato che le colonne sono sempre le stesse (da A2:J(x))
Quindi il range potrà essere A2: J20 o A2: J100 o ancora A2:J2000

Come faccio ad impostare la macro in modo tale che posso selezionarlo e copiarlo ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 741
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vfba excel: selezionare e copiare un range variabile

Postdi Anthony47 » 28/04/20 23:09

Ad esempio:
Codice: Seleziona tutto
LastRow = Sheets("NomeFoglio").Cells(Rows.Count,"A").End(xlUp).Row             '<<< Va bene la colonna A?
Sheets("NomeFoglio").Range("A2:J" & LastRow).Copy Destination:=Sheets("Foglio123").Range("A2")

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vfba excel: selezionare e copiare un range variabile

Postdi karug64 » 28/04/20 23:26

Grazie.

Volendo copiare il range uno dietro l'altro (secondo i file che leggo) come modifico la "A2" finale ?

Quindi:
leggo dal foglio1 del file1 l'intervalli A2:J10 e lo copia a partire dalla cella A2 del foglio1 del file2
leggo dal foglio1 del file1 l'intervalli A2:J40 e lo copia a partire dalla cella XX ( = 2+10 = 12 = la prima riga libera dopo aver copiato le righe) del foglio1 del file2

Grazie
Office 2010
karug64
Utente Senior
 
Post: 741
Iscritto il: 20/11/11 21:22

Re: vfba excel: selezionare e copiare un range variabile

Postdi Anthony47 » 28/04/20 23:31

Allora
Codice: Seleziona tutto
LastRow = Sheets("NomeFoglio").Cells(Rows.Count, "A").End(xlUp).row      '<<< Va bene la colonna A?
NextRow = Sheets("Foglio123").Cells(Rows.Count, "A").End(xlUp).row + 1   '<<< Va bene la colonna A?
Sheets("NomeFoglio").Range("A2:J" & LastRow).Copy Destination:=Sheets("Foglio123").Cells(NextRow, "A")
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vfba excel: selezionare e copiare un range variabile

Postdi karug64 » 29/04/20 07:37

Buongiorno Anthony.

Non riesco a fare funzionare il tuo codice.
Ho cercato di adattarlo così:

Codice: Seleziona tutto
Set Book_dip = Workbooks.Open(UserForm1.TextCartellaDip.Text + nomef)
Set Book_temp = Workbooks.Open(PercorsoPath + "\" + FILEdiLAVORO)
             
LastRow = Book_dip.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row      '<<< Va bene la colonna A? = SI
NextRow = Book_dip.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1   '<<< Va bene la colonna A? = SI
Book_dip.Sheets(1).Range("A2:J" & LastRow).Copy Destination:=Book_temp.Sheets(1).Cells(NextRow, "A")


con pessimi risultati .....

Grazie
Office 2010
karug64
Utente Senior
 
Post: 741
Iscritto il: 20/11/11 21:22

Re: vfba excel: selezionare e copiare un range variabile

Postdi Anthony47 » 29/04/20 09:47

Devi debuggare la macro...
Qui trovi le informazioni su come mettere un breakpoint nel codice, visualizzare i dati intermedi e in generale seguire l'evolvere del codice: viewtopic.php?f=26&t=103893&p=647677#p647677

Intanto spero che la Userform1 sia stata aperta in modalita' vbModeless

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vfba excel: selezionare e copiare un range variabile

Postdi karug64 » 02/05/20 10:15

Ok.
Risolto grazie
Office 2010
karug64
Utente Senior
 
Post: 741
Iscritto il: 20/11/11 21:22

Re: vfba excel: selezionare e copiare un range variabile

Postdi Anthony47 » 02/05/20 23:12

Cosi' per curiosita': hai trovato che cosa non andava o sei andato per tentativi?
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vfba excel: selezionare e copiare un range variabile

Postdi karug64 » 03/05/20 19:36

Ciao.
Il codice che funziona è:

Codice: Seleziona tutto
Set Book_dip = Workbooks.Open(UserForm1.TextCartellaDip.Text + nomef)
            Set Book_temp = Workbooks.Open(PercorsoPath + "\" + FILEdiLAVORO)
            numrigariepilogo = Book_temp.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
            LastRow = Book_dip.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row
            Book_dip.Sheets(1).Range("A2:J" & LastRow).Copy Destination:=Book_temp.Sheets(1).Range("A" & numrigariepilogo + 1)


Praticamente ho sostituito nell'indirizzo di destinazione cells con range, anche se il debug non mi dava informazioni molto precise.

E ho chiamato la form in modalità vbModeless

Così funziona (almeno spero ..... visto i grandi numeri, ho potuto fare delle verifiche "generiche", ma sembra andare tutto per il verso giusto).

Grazie.
Office 2010
karug64
Utente Senior
 
Post: 741
Iscritto il: 20/11/11 21:22

Re: vfba excel: selezionare e copiare un range variabile

Postdi Anthony47 » 03/05/20 20:40

Hummm... misteri...
Grazie del feedback
Avatar utente
Anthony47
Moderatore
 
Post: 17041
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "vfba excel: selezionare e copiare un range variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti