Rivediamo come si gestiscono le date in VBA...
Intanto, ho messo anche una routine che elimina tutti i fogli ad eccezione della Centralina, in modo da non stare lì a eliminare foglio per foglio, per giunta con un avviso che appare a ogni eliminazione (settando DisplayAlerts a false).
Sub eliminaTutti() Application.DisplayAlerts = False For Each elemento In Sheets If elemento.Name <> Centralina Then elemento.Delete Next Application.DisplayAlerts = True End Sub
Vediamo dunque le date...
Ecco trovato subito il modo di nominare il nuovo foglio con il nome del mese successivo a quello attuale:
Sub AggiungiFoglio() Sheets(Sheets.Count).Select Sheets.Add ActiveSheet.Name = MonthName(Month(Date) + 1) ActiveSheet.Move After:=Sheets(Sheets.Count) Sheets(Centralina).Select End SubIl problema è però che se io provo a schiacciare nuovamente il Button il codice cercherà di creare un altro foglio sempre con lo stesso nome, e nominare due fogli con lo stesso nome non è consentito.
Dovrei trovare un modo di gestire l'errore, in modo da impedire, in caso di errore, la creazione di nuovi fogli senza incorrere nel messaggio di errore.
Come si gestiva l'errore in VBA? Con "On Error", mi pare di ricordare, essendo assente il metodo universale del try... catch.
Ristudiamolo...
Ecco, senza ricorrere a On Error, altrimenti poi è facile che si generano casini...
Modificando la routine in modo da leggere il nome dell'ultimo foglio, e se non è uguale al nome del mese successivo, ossia se il foglio del mese successivo non è già stato aggiunto, lo si aggiunge, lo si rinomina e lo si sposta alla fine.
Sub AggiungiFoglio() Dim NomeMese As String NomeMese = MonthName(Month(Date) + 1) Sheets(Sheets.Count).Select If Sheets(Sheets.Count).Name <> NomeMese Then Sheets.Add ActiveSheet.Name = MonthName(Month(Date) + 1) ActiveSheet.Move After:=Sheets(Sheets.Count) Sheets(Centralina).Select End If End Sub
Nessun commento:
Posta un commento