Ciao,
adesso è tutto un po' più chiaro.

Mi sembra di capire che tu abbia già gestito l'input dei dati, l'individuazione dell'articolo prelevato e della riga in cui si trova.
Quindi c'è un punto del tuo programma in cui una variabile contiene il numero della riga da copiare.

Io, per arrivare a questa stessa situazione, ho usato una inputbox e una find e ho caricato il numero della riga da copiare nella variabile RigaDa. Riporto anche queste due istruzioni solo per documentazione ma tu non tenerne conto, mi sono servite solo per simulare nei miei test la tua situazione reale.

codice:
   Valore = InputBox(articolo)
   RigaDa = Range("A:A").Find(Valore).Row
Questa istruzione carica la variabile Ultima col numero dell'ultima riga che contiene qualcosa nella colonna A del foglio2.

codice:
   Ultima = Worksheets(2).Range("A:A").End(xlDown).Row
Purtroppo la funzione End ha un comportamento un po' strano, cioè se il numero di righe valorizzate è superiore a 1 restituisce il numero corretto di righe mentre se nessuna riga è valorizzata o se ne è valorizzata solo una restituisce il valore 1048576.
Chiederò al forum di vbscript se qualcuno sa come risolvere questa cosa. In attesa di una soluzione più ortodossa si può risolvere mettendo un valore qualsiasi nella cella A1 del foglio 2, per esempio un titolo di colonna o qualcos'altro a tua scelta e inserendo la if che segue. In questo modo il tuo registro partirà dalla riga 2. Purtroppo non sono riuscito a trovare una soluzione migliore.

codice:
   If Ultima = 1048576 Then Ultima = 1
Infine quest'istruzione copia la riga indicata nella variabile RigaDa e la inserisce nel foglio2 sotto l'ultima riga esistente, cioè alla posizione Ultima+1

codice:
   Worksheets(1).Rows(RigaDa).Copy Destination:=Worksheets(2).Cells((Ultima + 1), 1)

Spero che questo possa aiutarti.
Facci sapere
Ciao