Grazie a tutti.
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
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
Posizionati cosě:
Cells(Range("A1").End(xlDown).Row + 1, 1).Select
poi incolli
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" :
>> 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
>> 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" :
>> 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.
>> 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
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.
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
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.
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
> ==========================
> 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
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
> 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
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
Ciao