JavascriptProva

martedì 8 marzo 2016

Codice per risolvere il conflitto di nome per un nuovo foglio di Excel da rinominare.

Il problema è dover inserire un nuovo foglio di Excel e rinominarlo, con un nome che potrebbe entrare in conflitto con un eventuale foglio preesistente con lo stesso nome.
Ho seguito una logica un po' contorta, forse...

Il foglio, una volta creato, deve subire l'azione di due subroutines, chiamate EmptyRowDelete e DividiInterviste.
Se invece il foglio viene mantenuto, deve subire solo l'azione di DividiInterviste.
Ho seguito la logica di andare a ErrHandler: se c'è conflitto, di andare a fine: se non c'è conflitto.
In ErrHandler, se viene creato un file ex novo, si va ugualmente a fine: perché il destino è comune a quello che ci sarebbe in mancanza di errore, mentre se viene mantenuto il file originario si va a continua: per subire solo l'ultima delle azioni subite dal file negli altri due casi.
Sub CopiaFoglio()
    Dim newsheet As Worksheet
    Set newsheet = Sheets.Add
    
    On Error GoTo ErrHandler
    newsheet.Name = "Foglio elaborazione"
   
    GoTo fine



ErrHandler:
    risposta = MsgBox("Creare un nuovo Foglio Elaborazione?", vbYesNo)

        If risposta = vbNo Then
        Application.DisplayAlerts = False
        newsheet.Delete
        Application.DisplayAlerts = True
    GoTo continua

    Else
        Application.DisplayAlerts = False
        Sheets("Foglio elaborazione").Delete
        Application.DisplayAlerts = True
        newsheet.Name = "Foglio elaborazione"
    End If
fine:
    Sheets("Foglio Elaborazione").Move after:=Sheets("PANNELLO DI CONTROLLO")
    Sheets("riserva").Cells.Copy Destination:=Sheets("Foglio elaborazione").Cells
    EmptyRowDelete
continua:
     Sheets("Foglio elaborazione").Activate
     DividiInterviste
     
End Sub
Ho cercato di rendere con i colori le due vie e la via comune finale.

Nessun commento:

Posta un commento