Eliminare fogli di lavoro
Hai un problema con Excel? 
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
Vuoi Approfondire?