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

 

Question Info


Last updated February 27, 2018 Views 231 Applies to:
Risposta
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

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.