Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

vba excel: errore 1004 su range

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

vba excel: errore 1004 su range

Postdi karug64 » 01/03/18 20:43

Salve a tutti.

Ho questo semplice codice:

Codice: Seleziona tutto
Dim ultimariga As Long
ultimariga = 0

endcol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
If Cells(endcol, 1).Value <> "" Then
    endcol = endcol + 1
End If

ultimariga = Sheets("Foglio1").Cells(Rows.Count, endcol - 1).End(xlUp).Row

Sheets("Foglio1").Range(Cells(ultimariga, endcol - 1), Cells(1, endcol - 1)).Copy


Sheets("Foglio3").Activate

endcol = Sheets("Foglio3").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
If Sheets("Foglio3").Cells(endcol, 1).Value <> "" Then
    endcol = endcol + 1
End If

Sheets("Foglio3").Range(Cells(ultimariga, endcol - 1), Cells(1, endcol - 1)).Paste  '<<======== ERRORE 1004


con cui determino l'ultima colonna avvalorata del foglio1, ne copio il contenuto e poi cerco di trascriverne il contenuto sulla prima colonna vuota del foglio3, ma non riesco proprio a capire perchè ottengo l'errore 1004 sulla linea evidenziata.

Potete aiutarmi ?
Grazie
Office 2010
karug64
Utente Senior
 
Post: 747
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba excel: errore 1004 su range

Postdi Marius44 » 01/03/18 23:04

Ciao
non mi è chiara questa riga di codice
endcol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column

Stai dando alla variabile endcol il numero dell'ultima colonna piena della riga 1
Ma poi, a meno che non si tratti di un quadrato, metti la variabile endcol come riga

If Cells(endcol, 1).Value <> "" Then

O sbaglio a leggere?
Non ho guardato il resto. Mi son fermato al primo dubbio.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 546
Iscritto il: 07/09/15 22:00

Re: vba excel: errore 1004 su range

Postdi karug64 » 02/03/18 07:50

Ciao Marius.
Hai perfettamente ragione. Quella è stata una svista. (quel controllo l'ho inserito perchè praticamente ottengo 1 sia che la prima colonna sia vuota, sia che sia piena, per cui nel caso in cui la prima colonna sia vuota va bene, ma se la prima colonna è piena, andrei a sovrascriverne il contenuto .....).

Per l'errore mi dai qualche suggerimento ?

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

Re: vba excel: errore 1004 su range

Postdi Marius44 » 02/03/18 14:55

Ciao
Non conoscendo lo scopo finale, suggerirei questo codice
Codice: Seleziona tutto
Sub Copia_Incolla()
lastcol = Sheets("Foglio1").Cells(1, Columns.Count).End(xlToLeft).Column
Sheets("Foglio1").Columns(lastcol).Copy
ultcol = Sheets("Foglio3").Cells(1, Columns.Count).End(xlToLeft).Column + 1
Sheets("Foglio3").Columns(ultcol).PasteSpecial
Application.CutCopyMode = False
Sheets("Foglio3").Select
Cells(1, ultcol).Select
End Sub


Non ho dichiarato le variabili nè approntato trappole per eventuali errori; ma son certo che lo farai tu.
Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 546
Iscritto il: 07/09/15 22:00

Re: vba excel: errore 1004 su range

Postdi karug64 » 03/03/18 11:44

Ok.
La routine funziona, anche se va aggiunto il controllo sulla prima colonna. Infatti così lascia sempre la prima colonna del foglio3 vuota.

Per quanto riguarda il mio errore ho risolto modificando la riga:

Codice: Seleziona tutto
Sheets("Foglio3").Range(Cells(ultimariga, endcol - 1), Cells(1, endcol - 1)).Paste


in

Codice: Seleziona tutto
Sheets("Foglio3").Range(Sheets("Foglio3").Cells(ultimariga, endcol - 1), Sheets("Foglio3").Cells(1, endcol - 1)).select


Così funziona, ma non mi è chiaro perchè la select sul foglio1 non voleva i riferimenti davanti al Cells e quella sul foglio3 invece si ....

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

Re: vba excel: errore 1004 su range

Postdi Marius44 » 03/03/18 13:16

Ciao
rispondo alla tua ultima domanda:
probabilmente (anzi, ne sono quasi certo) quando lanci la macro è attivo il Foglio1 e quindi tutto ciò che non ha specifici riferimenti si riferisce a quel Foglio mentre se devi "andare" su un altro Foglio occorre indirizzare appropriatamente Excel.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 546
Iscritto il: 07/09/15 22:00

Re: vba excel: errore 1004 su range

Postdi karug64 » 03/03/18 14:12

Ciao.
Prima di eseguire la riga ho scritto:

Codice: Seleziona tutto
Sheets("Foglio3").Activate


o in alternativa

Codice: Seleziona tutto
Sheets("Foglio3").Select


(vedi codice inizio post), ma senza questa modifica da sempre l'errore 1004 ....
Office 2010
karug64
Utente Senior
 
Post: 747
Iscritto il: 20/11/11 21:22

Re: vba excel: errore 1004 su range

Postdi Anthony47 » 04/03/18 00:30

Paste non e' un metodo applicabile all'Oggetto Range, ma all'Oggetto Worksheet.
Quindi le opzioni possibili (senza discutere sugli obiettivi e la logica della macro) sono

Codice: Seleziona tutto
Sheets("Foglio3").Range(Cells(ultimariga, endcol - 1), Cells(1, endcol - 1)).Select
ActiveSheet.Paste


Codice: Seleziona tutto
Sheets("Foglio3").Cells(1, endcol - 1).Select       'Infatti basta indicare il punto di inizio
ActiveSheet.Paste


Codice: Seleziona tutto
ActiveSheet.Paste Destination:=Cells(1, endcol - 1)



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

Re: vba excel: errore 1004 su range

Postdi karug64 » 04/03/18 13:13

Grazie a tutti per i sempre validi suggerimenti.

Alla prossima.
Office 2010
karug64
Utente Senior
 
Post: 747
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba excel: errore 1004 su range":


Chi c’è in linea

Visitano il forum: Making e 30 ospiti