Eliminare fogli di lavoro



  • Eliminare fogli di lavoro
    di Omega (utente non iscritto) data: 13/05/2014 09:05:14

    Salve a tutti mi trovo ancora una volta a chiedere aiuto al forum.
    Ho un problema da risolvere in un file excel ho diversi fogli di lavoro con diversi nomi tipo:

    Pannello
    Modello
    Resoconto
    Prospetto 1
    Prospetto 2
    Prospetto3
    Prospetto 4
    è possibile creare una macro che se eseguita mi cancelli tutti i fogli tranne i fogli
    Pannello
    Modello
    Resoconto
    e da tenere presente che fogli con il nome Prospetto possono essere anche più di 4
    spero che qualcuno mi possa dare una mano grazie a tutti



  • di lepat (utente non iscritto) data: 13/05/2014 09:11:34

    prova questa
     
    Sub deletesheets()
    For j = Sheets.Count To 1 Step -1
      If left(Sheets(j).Name,5)  = "Prosp"  Then Sheets(j).Delete
    Next
    End Sub



  • di Omega (utente non iscritto) data: 13/05/2014 12:03:58

    Cia lepa e possibile eliminare i fogli senza premere elimina per ogni foglio?
    Premento elimina essere avvisato, "stai per eliminare i fogli procedere con l'eliminazione" se si eliminarli senza premere elimina per ogni foglio
    Spero cghe sia possibile
     



  • di Lucas87 data: 13/05/2014 12:09:56

    Ciao
     
    Sub deletesheets()
    Application.DisplayAlerts = False
    For j = Sheets.Count To 1 Step -1
        If Left(Sheets(j).Name, 5) = "Prosp" Then
            Sheets(j).Delete
        End If
    Next
    Application.DisplayAlerts = True
    End Sub



  • di Omega (utente non iscritto) data: 13/05/2014 12:30:42

    Ci siamo quasi, solo un msbox che avverte che si stiano cancellando i fogli, si Procedi all'eliminazione, no esci senza cancellare
    Grazie.



  • di Lucas87 data: 13/05/2014 12:47:43

    Ecco
     
    Sub deletesheets()
    If MsgBox("Si stanno per eliminare i Prospetti." & vbCrLf & "Proseguire?", vbInformation + vbYesNo) = vbYes Then
        Application.DisplayAlerts = False
        For j = Sheets.Count To 1 Step -1
            If Left(Sheets(j).Name, 5) = "Prosp" Then
                Sheets(j).Delete
            End If
        Next
        Application.DisplayAlerts = True
    End If
    End Sub



  • di Omega (utente non iscritto) data: 13/05/2014 14:14:11

    Adesso ci siamo solo che e sorto un problema mi spiego,
    il problema è che io conosco i fogli da non eliminare e sono:
    Pannello, Modello, Resoconto, Carico, però i fogli da eliminare potrebbero avere nome differente esempio:
    Prospetto
    Turno
    Vendita
    ecc
    se i fogli da eliminare non contengono il nome prospetto non vengono eliminati si può agirare l'ostacolo?




  • di Lucas87 data: 13/05/2014 14:20:50

    Due soluzioni:
    1° - Se i fogli da tenere cambiano posizione oppure non sono dal primo al quarto
    2° - Se i fogli da tenere sono i primi 4
     
    Sub deletesheets()
    If MsgBox("Si stanno per eliminare i Prospetti." & vbCrLf & "Proseguire?", vbInformation + vbYesNo) = vbYes Then
        Application.DisplayAlerts = False
        For j = Sheets.Count To 1 Step -1
            If Left(Sheets(j).Name, 5) <> "Panne" And Left(Sheets(j).Name, 5) <> "Model" And Left(Sheets(j).Name, 5) <> "Resoc" And Left(Sheets(j).Name, 5) <> "Caric" Then
                Sheets(j).Delete
            End If
        Next
        Application.DisplayAlerts = True
    End If
    End Sub
    
    Sub deletesheets()
    If MsgBox("Si stanno per eliminare i Prospetti." & vbCrLf & "Proseguire?", vbInformation + vbYesNo) = vbYes Then
        Application.DisplayAlerts = False
        For j = 5 To Sheets.Count
            Sheets(j).Delete
        Next
        Application.DisplayAlerts = True
    End If
    End Sub
    



  • di Omega (utente non iscritto) data: 13/05/2014 17:49:04

    Scusa Lucas87 non ho capito capito come dovrei usare le due soluzioni , sono due sub e dovrei usare una o l'altra.

    Ti devo chiedere un altra informazione è possibile rinominare un foglio di lavoro da codice esempio:
    Foglio1 (foglio1) se detto foglio è stato eliminato posso rinominare il foglio2 come foglio1



  • di Lucas87 data: 13/05/2014 19:15:28

    Il primo codice scorre i fogli ed elimina quelli in cui il nome non è Pannello, Modello, Resoconto, Carico (mi accorgo adesso che fargli controllare i primi 5 caratteri è una stronzata...provvedo subito). Il secondo invece parte dal quinto foglio e comincia a eliminare i successivi. Se i fogli che vuoi mantenere sono i primi 4 e non si spostano allora puoi usare il secondo. Se invece i fogli che non vuoi cancellare sono mescolati con gli altri allora devi usare il primo.
    Sostituisci l'if del primo codice con questo

    Per il nome del foglio:
    Non vorrei dire cavolate, ma mi sembra che sia possibile cambiare il nome del foglio (per capirci quello che c'è scritto nell'etichetta in basso), ma non il suo riferimento, ovvero, puoi chiamarlo Pippo, ma per excel rimane Foglio1. Quindi valgono queste tre situazioni
    Sheets(1).Range("a1") = "1"
    Foglio1.Range("a2") = "foglio1"
    Sheets("pippo").Range("a3") = "pippo"
     
    IF PER IL PRIMO CODICE:
    If Sheets(j).Name <> "Pannello" And Sheets(j).Name <> "Modello" And Sheets(j).Name <> "Resoconto" And Sheets(j).Name <> "Carico" Then
    
    
    CAMBIARE NOME:
    Activesheet.Name = "nuovonome"
    OPPURE
    Name = "nuovonome"
    



  • di alessia (utente non iscritto) data: 13/05/2014 19:31:36

    Scusate se mi intrometto. Ma se si volesse cancellare tutti i fogli partendo dal foglio n.5 meno l'ultimo foglio, come si potrebbe fare?
    Grazie



  • di alessia (utente non iscritto) data: 13/05/2014 19:51:51

    ops.
    If MsgBox("Si stanno per eliminare i Prospetti." & vbCrLf & "Proseguire?", vbInformation + vbYesNo) = vbYes Then
    Application.DisplayAlerts = False
    For j = Sheets.Count To 1 Step -1

    If Sheets(j).Name <> "foglio1" And Sheets(j).Name <> "foglio2" And Sheets(j).Name <> "Foglio3" And Sheets(j).Name <> "foglio4" And Sheets(j).Name <> "foglio10" Then

    Sheets(j).Delete
    End If
    Next
    Application.DisplayAlerts = True
    End If
    Non avevo visto. Grazie



  • di Omega (utente non iscritto) data: 13/05/2014 22:14:28

    Grazie a tutto lo staf siete stati di grande aiuto