maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> Worksheet: aggiungere fogli e dare nome più numero progressivo

Worksheet: aggiungere fogli e dare nome più numero progressivo - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

1 - Come creare nuovi fogli assegnado un nome più un numero progressivo. Esempio per 10 fogli che chiameremo Pag1, Pag2, ...., Pag10 :

Public Sub m()

    'dichiaro le variabili
    Dim lng As Long
    
    'impedisco lo sfarfallio dello schermo
    Application.ScreenUpdating = False
    
    'in caso di errore(un foglio con lo stesso nome)
    'ignoro l'errore e passo all'istruzione successiva
    On Error Resume Next
    
    'ciclo 10 volte
    For lng = 1 To 10
        'aggiungo un foglio
        ThisWorkbook.Worksheets.Add
        'gli do il nome
        ActiveSheet.Name = "Pag" & lng
        'impedisco vengano mostrati gli Alerts
        'nel caso debba eliminare il foglio
        Application.DisplayAlerts = False
        'se il foglio non ha uno dei nomi
        'prestabiliti(capiterebbe se faccio girare più
        'volte la macro)
        If ActiveSheet.Name <> "Pag" & lng Then
            'elimino il foglio
            ActiveSheet.Delete
        End If
        'ripristino gli Alerts
        Application.DisplayAlerts = True
    Next
    
    'aggiorno lo schermo
    Application.ScreenUpdating = True
    
End Sub

2 - Come creare nuovi fogli assegnado un nome più un numero progressivo. Questa volta non sappiamo quale numero assegnare, perchè la macro è eseguita più volte e ogni volta deve prendere il primo numero disponibile. i nomi assegnati in questo caso sono: Fornitura1, Fornitura2, ecc. :

Private Sub m()

On Error GoTo RigaErrore
    
    'dichiaro le variabili
    Dim lCont As Long
    Dim sh As Worksheet
    
    'creo il foglio e metto un riferimento allo stesso
    With ThisWorkbook
        Set sh = .Worksheets.Add
    End With
    
    lCont = 0
    'in caso di errore(foglio con nome+numero già presenti)
    'ignoro l'errore e passo all'istruzione successiva
    On Error Resume Next
    'fichè il nome del foglio non sarà uguale
    'a Fornitura(lCont)
    Do While Not sh.Name = "Fornitura" & lCont
        'aumento di 1 il valore della variabile
        lCont = lCont + 1
        'cerco di dare al foglio il nome
        'Fornitura(lCont)
        sh.Name = "Fornitura" & lCont
    Loop
    On Error GoTo 0
    
    '..........
    'eventuale codice per gestire il foglio creato
    '..........
        
'riga sempre eseguita
RigaChiusura:
    'Set a Nothing della variabile oggetto
    Set sh = Nothing
    'uscita dalla routine
    Exit Sub
    
'in caso di errore
RigaErrore:
    'visualizzo una MsgBox con i dati dell'errore
    MsgBox Err.Number & vbNewLine & Err.Description
    'vado alla riga di chiusuara
    Resume RigaChiusura

End Sub

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 18/11/2010 - mauro gamberini