Quando si avvia una nuova cartella di lavoro, è molto comune denominare ogni foglio di lavoro dopo un diverso giorno del mese. Se lo fai un po ‘, sai che può essere faticoso rinominare ogni foglio di lavoro, individualmente, esattamente come ti serve.

La seguente macro è stata sviluppata per aiutare in queste situazioni. Controlla i nomi dei fogli di lavoro nella tua cartella di lavoro, rinominandoli ai giorni del mese se iniziano con le lettere “Foglio”. Se non ci sono abbastanza fogli nella cartella di lavoro, aggiunge fogli, se necessario, per ogni giorno del mese.

Sub DoDays()

Dim J As Integer     Dim K As Integer     Dim sDay As String     Dim sTemp As String     Dim iTarget As Integer     Dim dBasis As Date

iTarget = 13     While (iTarget < 1) Or (iTarget > 12)

iTarget = Val(InputBox("Numeric month?"))

If iTarget = 0 Then Exit Sub     Wend

Application.ScreenUpdating = False     sTemp = Str(iTarget) & "/1/" & Year(Now())

dBasis = CDate(sTemp)

For J = 1 To 31         sDay = Format((dBasis + J - 1), "dddd mm-dd-yyyy")

If Month(dBasis + J - 1) = iTarget Then

If J <= Sheets.Count Then                 If Left(Sheets(J).Name, 5) = "Sheet" Then                     Sheets(J).Name = sDay                 Else                     Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay                 End If             Else                 Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay             End If         End If     Next J

For J = 1 To (Sheets.Count - 1)

For K = J + 1 To Sheets.Count             If Right(Sheets(J).Name, 10) > _               Right(Sheets(K).Name, 10) Then                 Sheets(K).Move Before:=Sheets(J)

End If         Next K     Next J

Sheets(1).Activate     Application.ScreenUpdating = True End Sub

Tieni presente che la macro presuppone che il mese per il quale desideri i fogli di lavoro sia l’anno corrente. Se non è così, dovrai apportare una piccola modifica. Notare la riga seguente vicino all’inizio della macro:

sTemp = Str(iTarget) & "/1/" & Year(Now())

Supponiamo che tu voglia che il mese sia nel 2015 per qualche motivo. Basta cambiare la riga come segue:

sTemp = Str(iTarget) & "/1/2015"

La macro imposta il nome di ogni scheda uguale al giorno della settimana seguito dalla data effettiva, come in “Mercoledì 28/03/2020”. Se vuoi cambiare il modo in cui le schede sono denominate per ogni giorno, cambia semplicemente il modo in cui la variabile sDay è costruita nella macro.

L’ultimo passaggio nella macro è che posiziona i fogli di lavoro nell’ordine corretto, in base ai giorni del mese. Il risultato è che se nella cartella di lavoro sono rimasti altri fogli di lavoro (in altre parole, alcuni di essi non iniziano con le lettere “Foglio”, quei fogli di lavoro finiscono alla fine della cartella di lavoro, dopo i fogli di ciascuno giorno.

_Nota: _

Se vuoi sapere come usare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è il tuo fonte di formazione economica su Microsoft Excel.

Questo suggerimento (11523) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per i vecchi interfaccia del menu di Excel qui: