You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Mancata copia dati con script VBA
[RISOLTO] Mancata copia dati con script VBA2018-09-15T06:43:54+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Mancata copia dati con script VBA

Taggato: 

Visualizzazione 4 filoni di risposte
  • Autore
    Post
    • bg66bg66
      Partecipante
        Post totali: 60

        Buonasera,

        continuo nel lavoro di implementazione del file postato nella sezione “I vostri lavori”.

        L’upgrade prevede la creazione di uno storico degli attestati “prodotti”.

        Ma non sono stato capace di riportare nel foglio storico tutti i valori che mi necessitano.

        In pratica lo script “creaStorico” mi conferma che la strada è corretta ma:

        1) quando provo ad importare anche il dato presente in B14 del foglio “Attestato” –>il debug non gradisce

        2) non so come estrarre la data dal testo in F32 del foglio “Attestato” per riportarlo nella colonna F del foglio “Storico”.

        >>>>>>>>>>

        Sub CreaStorico2()
        Sheets(“Attestato”).Select
        ur = Sheets(“Storico”).Cells(Rows.Count, 1).End(xlUp).Row + 1
        Range(“c4,c6,c8,c10,b14”).Copy
        Sheets(“Storico”).Cells(ur, 1).PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Application.CutCopyMode = False
        End Sub

        <<<<<<<<<<<<<<<<<<<

         

        https://www.dropbox.com/s/vdzadi1ftie57zh/Crea%20Attestato%20V002b.xlsm?dl=0

        Grazie per l’aiuto

        BG66

        • Questo topic è stato modificato 1 anno, 9 mesi fa da bg66bg66.
        • Questo topic è stato modificato 1 anno, 9 mesi fa da bg66bg66.
        • Questo topic è stato modificato 1 anno, 9 mesi fa da BySalvBySalv.
      • BySalvBySalv
        Amministratore del forum
          Post totali: 720

          Ciao bg66, quando si copiano dati da una posizione ad un altra, bisogna indicare dove prendere i dati e dove collocarli, dando indicazioni precise, riga colonna.

          nel tuo caso il problema è un poco più complesso, in quanto i dati che prelevi cioè

          Range(“c4,c6,c8,c10,b14”).Copy

          sono diverse celle tutte(quasi) in verticale, quando poi vai a copiarle dando solo la cella iniziale, Excel tende ad incollarle tutte in orizzontale, ma orizzontalmente nel range di partenza non ce ne sono, quindi non fa la copia in modo corretto.

          riscriviamo un poco la tua macro, ho messo i commenti per sapere cosa fa la riga di codice

          Sub CreaStorico2b()
          Dim sh1 As Worksheet, sh2 As Worksheet   'ho creato 2 variabili oggetto per i fogli
          Dim Ur As Long 'creato la variabile per l'ultima riga
          
          Set sh1 = Worksheets("Attestato") 'metto negli oggetti creati il nome del foglio
          Set sh2 = Worksheets("Storico") 'ora scrivendo solo sh1-sh2 mi riferisco ad un foglio oppure un altro
          sh1.Activate 'mi posiziono sul foglio1 "Attestato"
          
          'trovo l'ultima riga occupata + 1 per predere la cella vuota
          Ur = sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1
          
          'a questo punto senza fare copia/incolla, passo direttamente i valori dal foglio1 al foglio2
          'notare che uso due esempi uno con Cells che fa riferimento Cells(Riga, Colonna) l'altro con range
          'io trovo più conveniente Cells
          sh2.Range("A" & Ur) = sh1.Range("C4")
          sh2.Range("B" & Ur) = sh1.Range("C6")
          sh2.Cells(Ur, 3) = sh1.Cells(8, 3)
          sh2.Cells(Ur, 4) = sh1.Cells(10, 3)
          sh2.Cells(Ur, 5) = sh1.Cells(14, 2)
          sh2.Cells(Ur, 6) = sh1.Cells(32, 6)
          
          Set sh1 = Nothing 'cancello le variabili oggetto
          Set sh2 = Nothing
          End Sub

          questo è il metodo più sicuro di trasferire i dati, il copia/incolla va bene quando sono dati consecutivi e vengono copiati in orizzontale.

          Ciao By Sal :bye:

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • BySalvBySalv
          Amministratore del forum
            Post totali: 720

            Ciao Hoops, ho visto la tua seconda domanda, fai una “formato personalizzato” della cella, in modo che nella cella scrivi soltanto la data e ti compare “Addì,data” in modo che quando fai copia ti riporta solo la data, e non devi fare nessuna estrazion, seleziona la cella F32 e poi vai in formato cella, ecco un immagine

            Cattura

            vedi che dopo la virgola “Addì, ” ce uno spazio vuoto serve per separate la data dopo la virgola alla fine dai invio(Ok).
            ricorda di formattare come data la colonna F nel foglio storico.

            Ciao By Sal :bye:

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • bg66bg66
            Partecipante
              Post totali: 60

              RISOLTO

              Ciao By Sal,

              grazie per i suggerimenti.

              Allego link con file aggiornato:

              https://www.dropbox.com/s/lo43zxhdwrt1nh6/Crea%20Attestato%20V002b%2B.xlsm?dl=0

              PS Putroppo ho appena scoperto che il mio attestato ha un “buco normativo” e quindi a breve apro un nuovo thread…sperando sempre nella bontà di cuore di chi mi aiuterà :heart:

              A prestissimo

              BG66

               

            • BySalvBySalv
              Amministratore del forum
                Post totali: 720

                La burocrazia è il vero nemico dell’Italia.

                Ciao By Sal :bye:

                Ciao By Sal (8-)
                se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            Visualizzazione 4 filoni di risposte
            • Il topic ‘[RISOLTO] Mancata copia dati con script VBA’ è chiuso a nuove risposte.