Il codice seguente sta tentando di incollare l'intervallo selezionato (passato come rng
) alla fine del foglio di lavoro. Funziona se sono già presenti 2 file (A1, A2).Excel vba - xlDown
Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub
Quindi, se A1 e A2 presente e se si chiama questo metodo 100 volte, inserisce 100 righe dopo di loro. Ma, se nessuna riga è presente o solo A1, sovrascrive semplicemente A2. Ho potuto vedere excel scrivere sulla stessa riga (sovrascrivere)
Appare che, qualcosa a che fare con come xlDown calcola se ci sono meno di 2 righe, non è sicuro.
Qualsiasi aiuto sarebbe apprezzato.
+1 per spiegarlo bene. Così com'è, non sono mai stato favorevole all'uso di "ws.Range (" A1 "). End (xlDown)" per impostare un intervallo. Essendo la ragione, non fornisce (abbastanza comprensibilmente) l'intervallo corretto se c'è una cella vuota in mezzo. :) –
Tony, grazie per il tuo aiuto. Ha funzionato per me. Riguardo la prima parte, perché l'ho fatto in quel modo, stavo seguendo l'articolo 18 http://support.microsoft.com/kb/291308. Sorpreso di non vedere un modo semplice per farlo. grazie – bsr
@SiddharthRout .. o peggio l'ultima cella se la riga è vuota. La ricerca è molto meglio, ma è comunque necessario un test per garantire che l'intervallo di dati di interesse non sia vuoto. ['Trova' può essere più semplice] (http://stackoverflow.com/q/4872512/641067) a seconda di cosa è necessario – brettdj