Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Come incollare dati su righe successive vuote?

1,679 views
Skip to first unread message

Bobo

unread,
Sep 10, 2003, 3:32:58 AM9/10/03
to
Ciao,
volevo sapere gentilmente come si può fare con una macro
a incollare dei dati solo nelle celle vuote successive,
ad esempio da A2 a A8 senza sovrascrivere i dati
precedentemente incollati.

Grazie a tutti.

Roberto Restelli

unread,
Sep 10, 2003, 4:44:11 AM9/10/03
to
Ciao Bobo.

Non sono sicuro di aver capito bene quello che vuoi fare.
Tu vorresti eseguire un comando INCOLLA a partire dalla prima cella vuota al
di sotto di una zona di celle con valori?
Oppure hai necessità di riempire gli spazi vuoti in una zona di celle
(decisamente più complicato)?

Ciao, a presto
Roberto


Bobo

unread,
Sep 10, 2003, 5:07:37 AM9/10/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote in
news:bjmo94$k3mo6$1...@ID-150503.news.uni-berlin.de:


Ciao,
dovrei incollare dei dati in una riga, ad esempio
nell'intervallo A1:C1, quindi, in un secondo momento, sempre
con il comando incolla, dovrei incollarli in quella successiva
A2:C2. In sostanza i dati incollati devono essere
consecutivi a quelli precedenti. Spero di essermi spiegato.
Ciao e grazie

Mirror

unread,
Sep 10, 2003, 6:58:11 AM9/10/03
to

"Bobo" :
> volevo sapere gentilmente come si puň fare con una macro

> a incollare dei dati solo nelle celle vuote successive,
> ad esempio da A2 a A8 senza sovrascrivere i dati
> precedentemente incollati.
>

Posizionati cosě:

Cells(Range("A1").End(xlDown).Row + 1, 1).Select

poi incolli


Roberto Restelli

unread,
Sep 10, 2003, 7:37:28 AM9/10/03
to
Ciao Bobo.

Bobo wrote:
> dovrei incollare dei dati in una riga, ad esempio
> nell'intervallo A1:C1, quindi, in un secondo momento, sempre
> con il comando incolla, dovrei incollarli in quella successiva
> A2:C2. In sostanza i dati incollati devono essere
> consecutivi a quelli precedenti. Spero di essermi spiegato.

OK. Ammesso di aver già provveduto a "copiare" i dati nella clipboard (anche
con un banale COPIA), questa macro potrebbe occuparsi di posizionare la
cella attiva ed effettuare l'INCOLLA:
========================
Sub IncollaSottoTabella()
ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub
========================

Facci sapere se è sufficiente.

Ciao
Roberto


Bobo

unread,
Sep 10, 2003, 8:39:13 AM9/10/03
to
"Mirror" <ko...@inwind.it> wrote:


> "Bobo" :
>> volevo sapere gentilmente come si può fare con una macro


>> a incollare dei dati solo nelle celle vuote successive,
>> ad esempio da A2 a A8 senza sovrascrivere i dati
>> precedentemente incollati.
>>
>

> Posizionati così:


>
> Cells(Range("A1").End(xlDown).Row + 1, 1).Select
>
> poi incolli


Ho copiato-incollato il codice di cui sopra in una macro vuota
ma mi dà errore. Purtroppo non sono così esperto da capire se c'è un errore
di sintassi (non so se è il termine giusto). Io ho fatto così: ho
selezionato e copiato A1 del Foglio1, quindi lanciato la macro...
ma qui si blocca tutto come doicevo. Sic. Dove sbaglio?


Ciao e grazie

Bobo

unread,
Sep 10, 2003, 8:40:17 AM9/10/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote in

>> A2:C2. In sostanza i dati incollati devono essere
>> consecutivi a quelli precedenti. Spero di essermi spiegato.
>
> OK. Ammesso di aver già provveduto a "copiare" i dati nella clipboard
> (anche con un banale COPIA), questa macro potrebbe occuparsi di
> posizionare la cella attiva ed effettuare l'INCOLLA:
> ========================
> Sub IncollaSottoTabella()
> ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
> ActiveSheet.Paste
> End Sub
> ========================
>
> Facci sapere se è sufficiente.

Ciao, i vostri suggerimenti credo siano proprio quello che
cercavo, ma purtroppo anche qui quando avvio la macro con quel
codice mi dà errore.

Non sono così esperto da capire se c'è un errore

di sintassi (non so se è il termine giusto). Io ho fatto così:

- seleziono A1
- copio (manualmente).
- avvio la macro IncollaSottoTabella

A questo punto mi dà l'errore ovvero Debug evidenzia in giallo:
ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
Scusa, dove sto sbagliando?

Ciao e grazie

Bobo

unread,
Sep 10, 2003, 9:26:17 AM9/10/03
to
"Mirror" <ko...@inwind.it> wrote:

> "Bobo" :
>> volevo sapere gentilmente come si può fare con una macro


>> a incollare dei dati solo nelle celle vuote successive,
>> ad esempio da A2 a A8 senza sovrascrivere i dati
>> precedentemente incollati.
>>
>

> Posizionati così:


>
> Cells(Range("A1").End(xlDown).Row + 1, 1).Select
> poi incolli

Ho copiato-incollato tale e quale il codice ma mi dà errore.

Dovrei forse prima di avviare la macro posizionarmi-selezionare
qualche cella specifica?

Grazie.

Bobo

unread,
Sep 10, 2003, 9:30:45 AM9/10/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote:

>> con il comando incolla, dovrei incollarli in quella successiva
>> A2:C2. In sostanza i dati incollati devono essere
>> consecutivi a quelli precedenti. Spero di essermi spiegato.
>
> OK. Ammesso di aver già provveduto a "copiare" i dati nella clipboard
> (anche con un banale COPIA), questa macro potrebbe occuparsi di
> posizionare la cella attiva ed effettuare l'INCOLLA:
> ========================
> Sub IncollaSottoTabella()
> ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
> ActiveSheet.Paste
> End Sub
> ========================
>
> Facci sapere se è sufficiente.

Anche qui ho copiato pari pari la macro di cui sopra, ma mi dà errore
a questa stringa:

ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select

Con il registratore ho fatto così:

Sub IncollaSottoTabella()
Range("A1").Select
Selection.Copy


ActiveSheet.Range("A1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
End Sub

Purtroppo non sono molto esperto e non riesco a capire cosa non va.

Per semplificare al massimo dovrei fare quanto segue:

1. Nel Foglio1, cella A1 ho un valore X (che cambio nel tempo).
2. Seleziono A1 e copio-incollo X in A2 (sempre in Foglio1)
3 In momenti successivi devo ripetere il passo 1 e incollare X
in A3, successivamente incollare X in A4 e così via.

Grazie e scusate per l'insistenza.

Ciao

Mirror

unread,
Sep 10, 2003, 1:47:17 PM9/10/03
to

"Bobo" <bo...@stop.it> ha scritto nel messaggio
news:9IF7b.59217$R32.1...@news2.tin.it...

Il codice di Roberto è perfetto. Per cominciare, riempi a caso la cella A1 e
la cella A2, poi provi di nuovo. Molto probabilmente la macro si posiziona
in fondo al foglio (riga 65535) e poi non riesce a scendere ulteriormente di
una riga. Questo problema ce l'hai solo all'inizio.


Roberto Restelli

unread,
Sep 10, 2003, 1:57:13 PM9/10/03
to
Ciao Bobo.

Bobo wrote:
> Per semplificare al massimo dovrei fare quanto segue:
> 1. Nel Foglio1, cella A1 ho un valore X (che cambio nel tempo).
> 2. Seleziono A1 e copio-incollo X in A2 (sempre in Foglio1)
> 3 In momenti successivi devo ripetere il passo 1 e incollare X

> in A3, successivamente incollare X in A4 e cosě via.

In questo caso eviterei di passare per la clipboard. Prova questo tipo di
codice:
========================
Sub IncollaSottoTabella()
Dim oRange As Range

With ActiveSheet
'Individua la cella in cui copiare.
If .Range("A2").Value = "" Then
Set oRange = .Range("A2")
Else
Set oRange = .Range("A1").End(xlDown).Offset(1, 0)
End If

'Copia il valore da A1.
oRange.Value = .Range("A1").Value
End With

End Sub
======================

Ciao
Roberto

Bobo

unread,
Sep 11, 2003, 3:04:49 AM9/11/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote:

Vi ringrazio moltissimo. La macro sopra funziona alla perfezione ed č
esattamente quello che cercavo. Se posso fare gentilmente un'ultima
domanda, andando, almeno per me, un po' piů sul difficile: č possibile
incollare X anzichč sul foglio1 attivo sul foglio2?

Grazie ancora.

Ciao.

Roberto Restelli

unread,
Sep 11, 2003, 3:17:01 AM9/11/03
to
Ciao Bobo.

Bobo wrote:
> Vi ringrazio moltissimo. La macro sopra funziona alla perfezione ed č
> esattamente quello che cercavo. Se posso fare gentilmente un'ultima
> domanda, andando, almeno per me, un po' piů sul difficile: č possibile
> incollare X anzichč sul foglio1 attivo sul foglio2?

Certo! Bisogna apportare qualche piccola modifica al codice, in particolare
per tenere conto del foglio differente e soprattutto per prevedere che la
cella A1 del Foglio2 possa essere vuota (e quindi partire da essa ad
inserire i dati).
==========================


Sub IncollaSottoTabella()
Dim oRange As Range

With ActiveWorkbook.Sheets("Foglio2")


'Individua la cella in cui copiare.

If .Range("A1").Value = "" Then
Set oRange = .Range("A1")
ElseIf .Range("A2").Value = "" Then


Set oRange = .Range("A2")
Else
Set oRange = .Range("A1").End(xlDown).Offset(1, 0)
End If

'Copia il valore da A1.

oRange.Value = ActiveWorkbook.Sheets("Foglio1").Range("A1").Value
End With

End Sub
==============================

Ho utilizzato come riferimenti:
Foglio1!A1 - come foglio da cui prelevare il valore;
Foglio2!A1 - come zona di destinazione in cui copiare i valori rilevati.

Ciao
Roberto


Bobo

unread,
Sep 11, 2003, 4:12:37 AM9/11/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote:


> ==========================
> Sub IncollaSottoTabella()
> Dim oRange As Range
>
> With ActiveWorkbook.Sheets("Foglio2")
> 'Individua la cella in cui copiare.
> If .Range("A1").Value = "" Then
> Set oRange = .Range("A1")
> ElseIf .Range("A2").Value = "" Then
> Set oRange = .Range("A2")
> Else
> Set oRange = .Range("A1").End(xlDown).Offset(1, 0)
> End If
>
> 'Copia il valore da A1.
> oRange.Value =
> ActiveWorkbook.Sheets("Foglio1").Range("A1").Value
> End With
>
> End Sub
> ==============================
>
> Ho utilizzato come riferimenti:
> Foglio1!A1 - come foglio da cui prelevare il valore;
> Foglio2!A1 - come zona di destinazione in cui copiare i valori
> rilevati.

Grazie moltissime. Io non ci sarei mai riuscito e la
macro è davvero perfetta. Ho modificato solo il codice in modo
che la zona di destinazione sia Foglio!A2. Non sono però riuscito a
modificarlo in modo di copiare-incollare anzichè una sola cella, un
intervallo dati. Ancora meglio sarebbe, se possibile, 'trasponendo'
i dati dalla colonna A1:A6 del foglio1 alla riga B1:F1 del foglio2. Mi
scuso se ne approfitto ancora, mi rendo inoltre conto che sto forse
chiedendo l'impossibile. Grazie.


Ciao

Roberto Restelli

unread,
Sep 11, 2003, 5:17:25 AM9/11/03
to
Ciao Bobo.

Bobo wrote:
> [CUT] Non sono però riuscito a


> modificarlo in modo di copiare-incollare anzichè una sola cella, un
> intervallo dati. Ancora meglio sarebbe, se possibile, 'trasponendo'
> i dati dalla colonna A1:A6 del foglio1 alla riga B1:F1 del foglio2.

Non è molto più complesso. Siccome nel codice non viene utilizzata la
clipboard (e si provvede alla copia manuale del contenuto delle celle) la
questione della trasposizione è semplicata. Si tratta solo di aggiungere le
righe di codice che gestiscano le celle aggiuntive.
===============================


Sub IncollaSottoTabella()
Dim oRange As Range

With ActiveWorkbook.Sheets("Foglio2")
'Individua la cella in cui copiare, a partire da Fogli2!A2.


If .Range("A2").Value = "" Then
Set oRange = .Range("A2")

ElseIf .Range("A3").Value = "" Then
Set oRange = .Range("A3")
Else
Set oRange = .Range("A2").End(xlDown).Offset(1, 0)
End If
End With

With ActiveWorkbook.Sheets("Foglio1")


'Copia il valore da A1.

oRange.Value = .Range("A1").Value
'Copia il valore delle altre celle adiacenti (A1:A6),
' spostandosi ogni volta nella cella a destra (colonne A:F).
oRange.Offset(0, 1).Value = .Range("A2").Value
oRange.Offset(0, 2).Value = .Range("A3").Value
oRange.Offset(0, 3).Value = .Range("A4").Value
oRange.Offset(0, 4).Value = .Range("A5").Value
oRange.Offset(0, 5).Value = .Range("A6").Value


End With
End Sub
=========================

Se devi aggiungere ulteriori celle all'intervallo da copiare, accoda il
codice nell'ultimo gruppo di istruzioni.
Ho già modificato il codice per partire ad incollare da Foglio2!A2 anzichè
Foglio2!A1.

Ciao
Roberto


Bobo

unread,
Sep 11, 2003, 5:39:04 AM9/11/03
to
"Roberto Restelli" <roberto.res...@libero.it> wrote:

> Non è molto più complesso.

> [cut]

Fantastico! Funziona alla grande. Non ci sarei mai riuscito a realizzare
una macro simile e in così poco tempo, sei stato anche molto chiaro.
Grazie davvero moltissimo.
Più tardi, con un po' di calma, proverò ad adattere i riferimenti alla
tabella definitiva anche se così va già benissimo.

Ancora molte grazie.

Ciao

Roberto Restelli

unread,
Sep 11, 2003, 6:18:10 AM9/11/03
to
Ciao!

Bobo wrote:
> Più tardi, con un po' di calma, proverò ad adattere i riferimenti alla
> tabella definitiva anche se così va già benissimo.

OK! :-)
Se hai problemi, noi siamo qua!

Ciao
Roberto


Bobo

unread,
Sep 11, 2003, 7:41:27 AM9/11/03
to
Molto gentili. Grazie mille :-)

Ciao

0 new messages