Sviluppare funzionalita su Microsoft Office con VBA macro per moltiplicare un foglio excel

Login Registrati
Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
  • Autore
    Articoli
  • #27223 Score: 0 | Risposta

    tempusfugit
    Partecipante

      Buonasera,

      ho creato una macro per creare la copia di un foglio Excel_2019, vorrei inserire un istruzione che mi permetta tramite una userform di creare  n. fogli con n. nomi.

      Sub duplicafogli()
      Dim nomef As String
      nomef = InputBox("Digitare il nome del foglio:")
      If nomef <> "" Then
         ActiveSheet.Copy After:=Sheets(Sheets.Count)
         ActiveSheet.Name = nomef
         
      End If
      
      End Sub
      #27224 Score: 1 | Risposta

      tanimon
      Partecipante
        16 pts

        ciao a  tutti,

        prova

        Sub duplicafogli()
        Dim nomef As String
        Dim shs As Integer
        
        nomef = InputBox("Digitare il nome del foglio:")
        If nomef <> "" Then
           Sheets("Foglio1").Copy After:=Sheets(Sheets.Count)
           shs = Sheets.Count
           Sheets(shs).Name = nomef
            
           
        End If
        
        End Sub

        ciao

        Frank

        #27228 Score: 0 | Risposta

        tempusfugit
        Partecipante

          Ciao Frank, mi da errore

          sulla riga Sheets("Foglio1").Copy After:=Sheets(Sheets.Count)

          e poi non cc'è la user form che mi ciede quanti fogli voglio duplicare e come li voglio chiamare!

          Grazie.

          Max

          #27229 Score: 0 | Risposta

          GiuseppeMN
          Partecipante
            19 pts

            Buona giornata, @tempusfugit.

            @tempusfugit, scrive:

            ... vorrei inserire un istruzione che mi permetta tramite una userform di creare n. fogli con n. nomi ...

            Visto che stiamo parlando di UserForm, non serve ImputBox, basta dedicare una "TextBox" al "Nome Foglio di lavoro".

            Allega la tua UserForm.

             

            Giuseppe

            #27230 Score: 0 | Risposta

            tanimon
            Partecipante
              16 pts

              ciao Max,

              la UserForm, non è presente neanche nel tuo esempio.

              non sarebbe necessaria, ma se preferisci averla non preclude l'obiettivo, ed inoltre tu ne hai solo parlato e non hai allegato neanche un file che probabilmente tu hai già.

              Se vuoi allegalo con i tentativi che hai fatto.

              Non riscontro l'errore che hai segnalato,  e per il numero di fogli che vuoi duplicare, non hai indicato il criterio che lo determina,

              anche se, per questo,  potresti utilizzare un'altra ImputBox sulla quale impostare un ciclo For Next con all'interno le istruzioni del mio post precedente.

              Se non ho capito, spiega meglio...... ed allega un file compresi i tentativi che hai fatto.

               

              Ciao

              Frank

              Un saluto a Giuseppe: ci siamo accavallati nella risposta  

              #27232 Score: 0 | Risposta

              tempusfugit
              Partecipante
                `Sub duplicafoglio()
                Dim nomef As String
                Dim shs As Integer
                nomef = InputBox("Digitare il nome del foglio:")
                If nomef <> "" Then
                   ActiveSheet.Copy After:=Sheets(Sheets.Count)
                   ActiveSheet.Name = nomef
                 
                   
                End If
                
                End Sub
                
                
                `
                Allegati:
                You must be logged in to view attached files.
                #27234 Score: 0 | Risposta

                tanimon
                Partecipante
                  16 pts

                  ciao Max,

                  un passo l'hai fatto, hai allegato un file   

                  ho dato un'occhiata al file che hai allegato e ti confermo che la macro Duplica foglio funziona,

                  ma non c'è niente di niente che assomigli ad una UserForm nè tanto meno un tentativo di codice ad essa riferito.

                   

                  Ciao

                  Frank

                   

                   

                  #27235 Score: 0 | Risposta

                  tempusfugit
                  Partecipante

                    Buonasera Frank,

                    scusami ma io sono un dinosauro con le nuove tecnologie, ho sbagliato il nome, volevo dire "inputbox", invece di user form 🙂 , la macro funziona, ma io vorrei con un ciclo di impostare il numero di fogli da duplicare e il nome (esempio: quanti fogli vuoi duplicare? 10, come si devono chiamare? 18/8..19/8..20/8)

                     

                    Grazie e perdonatemi...

                    #27236 Score: 1 | Risposta

                    tanimon
                    Partecipante
                      16 pts

                      ciao Max,

                      prova mò

                      `Sub duplicafogli()
                      Dim giorno As String, mese_anno As String
                      Dim shs As Integer, contatore As Integer, r As Integer
                      
                      contatore = InputBox("Quanti fogli vuoi creare?")
                      giorno = (Day(Date) + 1) ' parte dal giorno dopo la data corrente
                      
                      For r = 1 To Val(contatore)
                          
                          mese_anno = Mid((Date), 4, 2) & Year(Date)
                          nomef = giorno & mese_anno
                      
                          
                              ActiveSheet.Copy After:=Sheets(Sheets.Count)
                              shs = Sheets.Count
                              Sheets(shs).Name = nomef
                              
                       giorno = giorno + 1
                          
                      Next r
                      End Sub
                      `

                       

                      ciao

                      Frank

                      #27237 Score: 0 | Risposta

                      tempusfugit
                      Partecipante

                        Grazie Frank,

                        un ultima cosa come faccio a mettere anche la data su ogni foglio creato?

                        #27238 Score: 0 | Risposta

                        tanimon
                        Partecipante
                          16 pts

                          ciao,

                          non basta metterla sul foglio di origine prima di lanciarne la duplicazione?

                          ciao

                          Frank

                          #27239 Score: 0 | Risposta

                          tempusfugit
                          Partecipante

                            Mi serviva inserirlo anche nei fogli, ti volevo anche chiedere per evitare che se non inserisco nessun foglio il programma mi vada in debug e mi deve fare anche un controllo se la data e già stata inserita, quale istruzione devo inserire?

                            Allegati:
                            You must be logged in to view attached files.
                            #27241 Score: 1 | Risposta

                            tanimon
                            Partecipante
                              16 pts

                              ciao Max, 

                              di seguito la correzione nel caso tu lasci vuota l'inputbox.

                              Ma andiamo per gradi:

                              1 - se devi portare avanti la discussione, togli il risolto o aprine una nuova,

                                   allegando esempio e tentativi fatti

                              2 - ammesso tu voglia imparare ma ne dubito fermamente, se ti limiti a copiare ed incollare 

                                   il codice che ti passano ti ritroverai sempre a fare domande come

                              tempusfugit ha scritto:

                              mi deve fare anche un controllo se la data e già stata inserita

                              la macro che ti ho passato l'ho scritta seguendo la tua indicazione al post #27235

                              tempusfugit ha scritto:

                              (esempio: quanti fogli vuoi duplicare? 10, come si devono chiamare? 18/8..19/8..20/8)

                              e come da commento nel codice facendo partire la sequenza dal giorno successivo alla data di sistema, e quindi da "domani in avanti"....

                              Va da sè che, ammesso tu non abbia fatto una copia manuale di uno o qualche foglio,

                              non ci potrà mai essere una data "già inserita" perchè la macro elaborerà solo date future.

                              ecco la correzione

                              Sub duplicafogli()
                              Dim giorno As String, mese_anno As String, contatore As String
                              Dim shs As Integer, r As Integer
                              
                              controllo:
                              contatore = InputBox("Quanti fogli vuoi creare?")
                              
                              If contatore = "" Then
                                  MsgBox ("Devi inserire un numero")
                                  GoTo controllo
                              End If
                              
                              giorno = (Day(Date) + 1) ' parte dal giorno dopo la data corrente
                              
                              For r = 1 To Val(contatore)
                                  
                                  mese_anno = Mid((Date), 4, 2) & Year(Date)
                                  nomef = giorno & mese_anno
                              
                                  
                                      ActiveSheet.Copy After:=Sheets(Sheets.Count)
                                      shs = Sheets.Count
                                      Sheets(shs).Name = nomef
                                      
                               giorno = giorno + 1
                                  
                              Next r
                              End Sub
                              

                               

                              ciao

                              Frank

                               

                               

                               

                               

                              #27442 Score: 0 | Risposta

                              tempusfugit
                              Partecipante

                                Buonasera Frank,

                                quale istruzione devo inserire per far si che quando eseguo la macro per la duplicazione del foglio mi compaia la data nel formato 00-00-0000 (esempio: 01-09-2020) e non 1092020?

                                Grazie.

                                Massimiliano

                                #27449 Score: 0 | Risposta

                                tanimon
                                Partecipante
                                  16 pts

                                  ciao Massimiliano,

                                  allega il file con le macro che ti creano il problema, e spiega passo passo, come le utilizzi.

                                  Il mio consiglio è  comunque quello di NON utilizzare caratteri speciali nel nome dei fogli.

                                  Visto che questa discussione è  marcata RISOLTA,

                                  meglio ne apri una nuova.

                                  ciao

                                  Frank

                                Login Registrati
                                Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
                                Rispondi a: macro per moltiplicare un foglio excel
                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                Le tue informazioni: