Condividi tramite

COPIARE CELLE CON MACRO

Anonimo
2010-09-28T12:21:47+00:00

Ciao a tutti i super esperti! Ho questo problema da risolvere:

Ho una cartella di lavoro MOTO con un foglio che si chiama MOTO.

Devo creare una macro che mi permetta di copiare alcune celle non vuote in altra cartella di lavoro MOTOCOPIA ed all'interno di un altro foglio di lavoro MOTOCOPIA.

Le celle da copiare devo poterle scegliere di volta in volta, mentre le colonne non variano, e devono incollarsi in fondo a MOTOCOPIA

E' possibile?

Vi allego link con esempio

http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

Grazie mille a tutti, ma per davvero!!

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-10-01T14:16:54+00:00

With shMotoCopia

.Select        shMoto.Range("A" & vRigaInizio & ":A" & vRigaFine).Copy

        .Range("B" & vRigaInizioCopia).Select

nel punto in neretto mi restiuisce questo errore

 

run time 1004

metodo select dell'oggetto worksheet non riuscito

 

merci

opsss, è vero, abbiamo due files aperti..., prova:

Public Sub m()

    Dim wkMoto As Workbook

    Dim wkMotoCopia As Workbook

    Dim shMoto As Worksheet

    Dim shMotoCopia As Worksheet

    Dim vRigaInizio As Variant

    Dim vRigaFine As Variant

    Dim vRigaInizioCopia As Variant

    Set wkMoto = ThisWorkbook

    Set shMoto = wkMoto.Worksheets("Moto")

    Set wkMotoCopia = Workbooks("MotoCopia.xlsx")

    Set shMotoCopia = wkMotoCopia.Worksheets("MotoCopia")

    vRigaInizio = Application.InputBox("Inserire numero riga inizio")

    vRigaFine = Application.InputBox("Inserire numero riga fine")

    vRigaInizioCopia = Application.InputBox("Inserire numero riga inizio copia")

    If vRigaInizio = False Or Not IsNumeric(vRigaInizio) Then

        MsgBox "Valore non valido, riprovare"

        Exit Sub

    End If

    If vRigaFine = False Or Not IsNumeric(vRigaFine) Then

        MsgBox "Valore non valido, riprovare"

        Exit Sub

    End If

    If vRigaInizioCopia = False Or Not IsNumeric(vRigaInizioCopia) Then

        MsgBox "Valore non valido, riprovare"

        Exit Sub

    End If

    Application.ScreenUpdating = False

    With shMotoCopia

        wkMotoCopia.Activate

        .Select

        shMoto.Range("A" & vRigaInizio & ":A" & vRigaFine).Copy

        .Range("B" & vRigaInizioCopia).Select

        Selection.PasteSpecial Paste:=xlPasteValues, _

            Operation:=xlNone, _

            SkipBlanks:=False, _

            Transpose:=False

        shMoto.Range("B" & vRigaInizio & ":B" & vRigaFine).Copy

       .Range("C" & vRigaInizioCopia).Select

        Selection.PasteSpecial Paste:=xlPasteValues, _

            Operation:=xlNone, _

            SkipBlanks:=False, _

            Transpose:=False

        shMoto.Range("C" & vRigaInizio & ":C" & vRigaFine).Copy

       .Range("D" & vRigaInizioCopia).Select

        Selection.PasteSpecial Paste:=xlPasteValues, _

            Operation:=xlNone, _

            SkipBlanks:=False, _

            Transpose:=False

        shMoto.Range("D" & vRigaInizio & ":D" & vRigaFine).Copy

       .Range("F" & vRigaInizioCopia).Select

        Selection.PasteSpecial Paste:=xlPasteValues, _

            Operation:=xlNone, _

            SkipBlanks:=False, _

            Transpose:=False

    End With

    wkMoto.Activate

    shMoto.Select

    With Application

        .CutCopyMode = False

        .ScreenUpdating = True

    End With

    Set shMoto = Nothing

    Set shMotoCopia = Nothing

    Set wkMotoCopia = Nothing

    Set wkMoto = Nothing

End Sub

Scusa la mia pigrizia ma non ho voglia di ricreare tuttti i files e relativi contesti... ;-)



--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

22 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-09-28T17:25:35+00:00

    OK Mauro ci siamo quasi, vedo di spiegarmi meglio, ho provato la tua soluzioen è funziona oltre ad esser funzionale!

    Ma devo

    -potergli dire da quale riga iniziare a copiare dal foglio di origine, e fino a quale riga.

    • automaticamente i valori indicati al precedente punto dovranno andar la colonna A nella colonna destinazione B; la colonna B nella colonna dest C; la colonna C nella colonna dest D; e la colonna D nella colonna dest F. Ogni valore copiato dovra esser inserito sotto l'ultimo valore non vuoto della colonna A di destinazione. Nell'esempio la colonna A e la colonna E entrambe di destinazione dovranno rimanere vuote o meglio non esser interessate dall'"incollaggio", perdonami questo termine!
    • entrambi le cartelle, file, di lavoro saranno aperti

    Grazie e buona serata

    Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-09-28T15:42:44+00:00

    no devo poter di volta in volta scegliere le righe da copiare dal foglio 1; e le andrò sempre ad incollare sotto l'ultimo valore del foglio 2 colonna A.

     

    Consideriamo che il foglio attivo sia il foglio Moto nel Workbook(file) Moto e che tu voglia copiare le celle selezionate(non dici come le selezioni, ma questo non è importante) nel file MotoCopia, Foglio MotoCopia, prima cella libera della colonna B. Presumo che entrambi i files siano aperti, altrimenti spiega. Questo il codice da copia/incollare in un modulo standard di Moto:

    Public Sub m()

        Dim wk As Workbook

        Dim sh As Worksheet

        Dim lUltRiga As Long

        Set wk = Workbooks("MotoCopia.xls")

        Set sh = wk.Worksheets("Motocopia")

        With sh

            lUltRiga = .Range("B" & .Rows.Count).End(xlUp).Row

            Selection.Copy Destination:=.Range("B" & lUltRiga + 1)

        End With

        Set sh = Nothing

        Set wk = Nothing

    End Sub


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-09-28T13:36:09+00:00

    Ciao a tutti i super esperti! Ho questo problema da risolvere:

    Ho una cartella di lavoro MOTO con un foglio che si chiama MOTO.

    Devo creare una macro che mi permetta di copiare alcune celle non vuote in altra cartella di lavoro MOTOCOPIA ed all'interno di un altro foglio di lavoro MOTOCOPIA.

    Le celle da copiare devo poterle scegliere di volta in volta, mentre le colonne non variano, e devono incollarsi in fondo a MOTOCOPIA

     

    E' possibile?

     

    Vi allego link con esempio

     

    http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

    http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

    Grazie mille a tutti, ma per davvero!!

     

    Vediamo di capire. Fai sempre l'operazione di copiare le prime due righe del Foglio1 in cima alla tabella del Foglio2 e le ultime due righe del Foglio1 in fondo alla tabella del Foglio2? Se così non è, qual'è la discriminante fra righe da copiare sopra e righe da copiare sotto? Grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    no devo poter di volta in volta scegliere le righe da copiare dal foglio 1; e le andrò sempre ad incollare sotto l'ultimo valore del foglio 2 colonna A.

    Grazie

    Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-09-28T12:35:40+00:00

    Ciao a tutti i super esperti! Ho questo problema da risolvere:

    Ho una cartella di lavoro MOTO con un foglio che si chiama MOTO.

    Devo creare una macro che mi permetta di copiare alcune celle non vuote in altra cartella di lavoro MOTOCOPIA ed all'interno di un altro foglio di lavoro MOTOCOPIA.

    Le celle da copiare devo poterle scegliere di volta in volta, mentre le colonne non variano, e devono incollarsi in fondo a MOTOCOPIA

     

    E' possibile?

     

    Vi allego link con esempio

     

    http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

    http://gogool.altervista.org/Filmati_vacanze/esempio.pdf

    Grazie mille a tutti, ma per davvero!!

     

    Vediamo di capire. Fai sempre l'operazione di copiare le prime due righe del Foglio1 in cima alla tabella del Foglio2 e le ultime due righe del Foglio1 in fondo alla tabella del Foglio2? Se così non è, qual'è la discriminante fra righe da copiare sopra e righe da copiare sotto? Grazie.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento