Sviluppare funzionalita su Microsoft Office con VBA Copia e incolla valori Range Multipli da foglio attivo a un altro foglio

LoginRegistrati
Stai vedendo 12 articoli - dal 1 a 12 (di 12 totali)
  • Autore
    Articoli
  • #18303 Risposta

    Mirco.68
    Partecipante

      Buongiorno gruppo, ho un problema con una MACRO.

      Come da titolo devo copiare un Range Multiplo (di celle non visibili) tramite CommandButton inserito in una UserFom. Il codice inserito è il seguente ma mi da errore:

      Private Sub CopiaFerie_Click()
      Application.ScreenUpdating = False
      
      Worksheets("FERIE").Range("AO18:OO21,AO69:OO80,AO120:OO131,AO171:OO182,AO222:OO233").Select
      Selection.Copy
      
      Worksheets("CALENDARIO").Range("E5:NE8,E9:NE20,E21:NE32,E33:NE44,E45:NE56").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      
      Application.ScreenUpdating = True
      End Sub
      #18305 Risposta
      patel
      patel
      Moderatore
      • Sfida #6
        31 pts

        non hai detto dove hai l'errore, comunque prova con

        Private Sub CopiaFerie_Click()
        Application.ScreenUpdating = False
        Worksheets("FERIE").Range("AO18:OO21,AO69:OO80,AO120:OO131,AO171:OO182,AO222:OO233").Copy
        Worksheets("CALENDARIO").Range("E5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.ScreenUpdating = True
        End Sub

        e cerca di usare Select il meno possibile

        #18306 Risposta

        Mirco.68
        Partecipante

          Ok va, grazie tantissimo per l'aiuto celere. Ho dovuto togliere il blocco al foglio Calendario (era protetto) sennò mi dava errore.

          Volendo fare in modo che il foglio Calendaria venga Sbloccato e poi ribloccato a fine routine dove devo inserire in VBA ActiveSheet.Unprotect/ActiveSheet.Protect? 

          #18311 Risposta

          Mirco.68
          Partecipante

            Qualcuno mi può aiutare?

            #18313 Risposta
            Marius44
            Marius44
            Moderatore
            • Sfida #4
              11 pts

              Ciao

              E' sempre meglio leggere (e rileggere) il Regolamento, specie alla regola

              10) Nessuno è obbligato a rispondere
              Chi risponde, lo fa nel tempo libero e in modo del tutto volontario: nessuno è obbligato a rispondere o fornire una soluzione ad un problema. Chi risponde lo fa soprattutto perché gli piace aiutare gli altri. Bisogna evitare di intitolare una domanda come "Urgente" o di aspettarsi risposte lampo.
              Ti ricordiamo che bisogna evitare di indirizzare una domanda a una specifica persona: la domanda deve poter ricevere una risposta da un qualsiasi utente del Forum.

               

              In merito al tuo problema, nel codice che ti ha suggerito patel (    ciao), se ci ragioni su un momento, non dovrebbe essere difficile.

              Tu vuoi togliere la protezione al Foglio "Calendario" quindi il relativo codice va immediatamente prima della riga che inizia con

              Worksheets("CALENDARIO")

               

              mentre per ri-proteggerlo devi mettere il codice dopo che hai finito d'incollare

               

              Ciao,

              Mario 

              #18314 Risposta

              Mirco.68
              Partecipante

                Ho provato a fare gia cosi prima di chiedere aiuto ma non va....da errore

                Errore nel metodo PasteSpecial per la classe Range

                 

                Private Sub CopiaFerie_Click()
                
                Application.ScreenUpdating = False
                
                Worksheets("FERIE").Range("AO18:OO21,AO69:OO80,AO120:OO131,AO171:OO182,AO222:OO233").Copy
                
                ActiveSheet.Unprotect
                Worksheets("CALENDARIO").Range("E5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
                ActiveSheet.Protect
                
                Application.ScreenUpdating = True
                End Sub
                #18322 Risposta
                Luca73
                Luca73
                Partecipante
                  14 pts

                  Ciao, Senza foglio e senza il resto della macro diventa difficile dare una spiegazione.

                  Perchè usi 

                  ActiveSheet.Unprotect

                  Qual'è il foglio attivo? è meglio usare un 

                  Worksheets("CALENDARIO").unprotect
                  

                  Così almeno sei sicuro di quale foglio stai sproteggendo.

                  Analogamente per la protezione successiva

                  Usando le selezioni e i fogli attivi diventa più difficile da interpretare.

                  Puoi anche usare un with (se tutte le operazioni sono legate allo stesso foglio 

                  With Worksheets("CALENDARIO")
                     .Unprotect
                     .Range("E5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                     .Protect
                  end with
                  

                  Ciao Luca

                  #18325 Risposta
                  patel
                  patel
                  Moderatore
                  • Sfida #6
                    31 pts

                    inoltre sarebbe meglio testare il codice con fogli non protetti e se tutto va bene aggiungere la protezione

                    #18328 Risposta

                    Mirco.68
                    Partecipante

                      Grazie ragazzi x la risposta. Il foglio attivo con cui faccio partire il codice tramite una CommandButton inserita in una userform è FERIE. Da qui mi preleva i dati e mi copia i valori (le formule nn mi servono) nel foglio CALENDARIO.

                      Tutti i fogli sono protetti (parzialmente). 

                      Se sul foglio CALENDARIO tolgo la protezione il codice nn da errore altrimenti viene segnalato il msg che ho fatto presente nei pist precedenti.

                      Ho provato ad inserire prima e dopo il codice per la copia su CALENDARIO il comando UNPROTECT/PROTECT ma sicuramente sbaglio qualcosa. Il codice senza sblocchi è questo:

                      `Private Sub CopiaFerie_Click()
                      Application.ScreenUpdating = False
                      Worksheets("FERIE").Range("AO18:OO21,AO69:OO80,AO120:OO131,AO171:OO182,AO222:OO233").Copy
                      Worksheets("CALENDARIO").Range("E5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                      :=False, Transpose:=False
                      Application.ScreenUpdating = True
                      End Sub`
                      #18333 Risposta
                      Luca73
                      Luca73
                      Partecipante
                        14 pts

                        Ciao.

                        Ti manca lo sblocco del foglio su cui incolli. Con il precedente codice usando activesheets.unprotect, sproteggevi il foglio attivo ovvero ferie, mentre devi sproteggere il foglio su cui incolli ovvero calendario.

                        La soluzione è mnel mio post di prima.

                        With Worksheets("CALENDARIO")
                           .Unprotect
                           .Range("E5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                           .Protect
                        end with
                        #18334 Risposta

                        Mirco.68
                        Partecipante

                          Aggiornamento: cliccando sul commandbutton la prima volta esegue correttamente il codice, cliccandoci nuovamente da l'errore segnalato prima:

                          errore di run-time '1004':

                          Errore nel metodo PasteSpecial per la classe Range

                          il codice senza bloccare il foglio va correttamente ma essendo un foglio di lavoro condiviso con colleghi va bloccato onde evitare di cancellare delle formule inavvertitamente.

                          #18339 Risposta
                          Luca73
                          Luca73
                          Partecipante
                            14 pts

                            senza il file e tutte le macro nella loro completezza non saprei....potrebbe essere qualche altr azione che interagisce.

                            Ciao

                          LoginRegistrati
                          Stai vedendo 12 articoli - dal 1 a 12 (di 12 totali)
                          Rispondi a: Copia e incolla valori Range Multipli da foglio attivo a un altro foglio
                          Gli allegati sono permessi solo ad utenti REGISTRATI
                          Le tue informazioni:



                          vecchio frac - 2388 risposte

                          albatros54
                          albatros54 - 670 risposte

                          patel
                          patel - 541 risposte

                          Marius44
                          Marius44 - 448 risposte

                          Luca73
                          Luca73 - 432 risposte