› Sviluppare funzionalita su Microsoft Office con VBA › macro per moltiplicare un foglio excel
-
AutoreArticoli
-
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 SubCiao 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
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
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
`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.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
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...
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
Grazie Frank,
un ultima cosa come faccio a mettere anche la data su ogni foglio creato?
ciao,
non basta metterla sul foglio di origine prima di lanciarne la duplicazione?
ciao
Frank
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.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
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
(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 Subciao
Frank
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
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
-
AutoreArticoli
