Codice assegna nome a Foglio

Buonasera.

Ho una cartella di lavoro in cui il nome di ciascun foglio viene assegnato in base alla data contenuta nella cella A36 di ciascun foglio stesso (Anno aaaa). Uso per questo il seguente codice in ThisWorkbook:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo RigaErrore
     Dim s As String
     s = Sh.Name 
    With Target
         If .Cells.Count > 1 Then Exit Sub
         If .Address = "$A$36" And Len(.Value) > 0 Then
             'Sh.Name = Year(.Value)
             Sh.Name = "Anno " & Year(.Value)
         End If
     End With
     Exit Sub  
RigaErrore:
     Sh.Name = s    
End Sub


Poiché la data nella cella A36 viene compilata in automatico in quanto la cella contien una formula che va a riprendere la data in un altro foglio e non è inserita mabnualmente con successivo invio, vorrei una macro da eseguire con un pulsante che mi esegue il codice che ho oppure una modifica al codice per ptere essere eseguito con un pulsante. Così che con un clik posso rinominare tutti i fogli in base alla data contenuta della loro cella A36.

Spero che qualcuno possa aiutarmi e che ringrazio in anticipo.

Giuseppe

 

Informazioni domanda


Ultimo aggiornamento febbraio 27, 2018 Visualizzazioni 227 Si applica a:
Risposta

 Così che con un clik posso rinominare tutti i fogli in base alla data contenuta della loro cella A36.

Spero che qualcuno possa aiutarmi e che ringrazio in anticipo.

Giuseppe


Questo lo fa su tutti i fogli:

 

Public Sub m_1()
    Dim sh As Worksheet
    Dim lRisposta As Long
    lRisposta = MsgBox("Modificare i nomi dei fogli?", _
        vbYesNo + vbQuestion, "Attenzione")
    If lRisposta = vbYes Then
        For Each sh In ThisWorkbook.Worksheets
            On Error Resume Next
            sh.Name = Format(sh.Range("A36").Value, "dd-mm-yyyy")
        Next
    End If
End Sub

 

Questo esclude tre fogli:

 

Public Sub m_2()
    Dim sh As Worksheet
    Dim lRisposta As Long
    lRisposta = MsgBox("Modificare i nomi dei fogli?", _
        vbYesNo + vbQuestion, "Attenzione")
    If lRisposta = vbYes Then
        For Each sh In ThisWorkbook.Worksheets
            Select Case sh.Name
                Case "Pippo", "Pluto", "Paperino"
                Case Else
                    On Error Resume Next
                    sh.Name = Format(sh.Range("A36").Value, "dd-mm-yyyy")
            End Select
        Next
    End If
End Sub

 

Un pulsante è una cosa che può essere evitata con un tasto di scelta rapida. Vedi qui il punto 5 e seguenti:

http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.