› Sviluppare funzionalita su Microsoft Office con VBA › Eliminare foglio Temp
-
AutoreArticoli
-
E' possibile eliminare il Foglio temp alla chiusura di UserForm senza gestire l'Errore
Allego anche il mio Foglio
`Option Explicit Private Sub CommandButton1_Click() Application.DisplayAlerts = False Sheets("Prova").Delete Unload Me End Sub Private Sub UserForm_Initialize() Dim ShTemp As Worksheet Set ShTemp = ThisWorkbook.Worksheets.Add: ShTemp.Name = "Prova" End Sub Private Sub UserForm_Terminate() Application.DisplayAlerts = False On Error Resume Next Sheets("Prova").Delete End Sub`Allegati:
You must be logged in to view attached files.Forse con un ciclo scorri la collezione dei fogli e se trova il foglio "Prova" allora lo elimina
Penso sia meglio cosi in CommandButton1_Click()
>>>Application.DisplayAlerts = False
>>>Sheets("Prova").Delete
>>>Application.DisplayAlerts = TrueScusami ma non riesco a capire cosa desideri?
Si avvia l'userform e crea il foglio, dopo premi il bottone che elimina il foglio. Dato che hai aggiunto Sub UserForm_Terminate(), il codice tenta d'eliminare il foglio che non esiste più. In pratica non serve sia...
>>>Application.DisplayAlerts = False
>>>On Error Resume Next
>>>Sheets("Prova").DeletePenso sia meglio cosi in CommandButton1_Click() >>>Application.DisplayAlerts = False
>>>Sheets("Prova").Delete
>>>Application.DisplayAlerts = TrueCiao Raffaele se elimini On Error Resume Next quando chiudi dalla croce ti da errore , chiedevo se esisteva un modo senza gestirlo come errore ,
In quanto a Application.DisplayAlerts = True ci vuole perche quando chiudi dalla X se non c'è ti esce il messaggio
Ma credo sia valido il consiglio di Alex fai un ciclo se lo trova lo elimina altrimenti finisce il ciclo
Una possibilità è dichiarare la variabile ShTemp come public nel modulo della userform:
Public ShTemp As Worksheet Private Sub CommandButton1_Click() Application.DisplayAlerts = False ShTemp.Delete Set ShTemp = Nothing Application.DisplayAlerts = True Unload Me End Sub Private Sub UserForm_Initialize() 'Dim ShTemp As Worksheet Set ShTemp = ThisWorkbook.Worksheets.Add: ShTemp.Name = "Prova" End Sub Private Sub UserForm_Terminate() Application.DisplayAlerts = False If Not ShTemp Is Nothing Then Sheets("Prova").Delete Application.DisplayAlerts = True End SubCiao Scossa la tua macro è perfetta
Ero comunque riuscito con il consoglio di Alex
Grazie a tutti
Option Explicit Private Sub CommandButton1_Click() Application.DisplayAlerts = False Sheets("Prova").Delete Unload Me End Sub Private Sub UserForm_Initialize() Dim ShTemp As Worksheet Set ShTemp = ThisWorkbook.Worksheets.Add: ShTemp.Name = "Prova" End Sub Private Sub UserForm_Terminate() Application.DisplayAlerts = False Dim i As Integer For i = 1 To ThisWorkbook.Sheets.Count - 1 If Sheets(i).Name = "Prova" Then Sheets("Prova").Delete Next End SubCiao @oscar
non so...forse mi sbaglio ma io avrei fatto così:
Option Explicit Dim blFoglioEliminato As Boolean Private Sub CommandButton1_Click() eliminaFoglioProva blFoglioEliminato = True Unload Me End Sub Private Sub UserForm_Initialize() Dim ShTemp As Worksheet Set ShTemp = ThisWorkbook.Worksheets.Add: ShTemp.Name = "Prova" End Sub Private Sub UserForm_Terminate() If Not blFoglioEliminato Then eliminaFoglioProva End Sub Sub eliminaFoglioProva() Dim i As Integer For i = 1 To ThisWorkbook.Sheets.Count - 1 '<== Errore...togliere "- 1" If Sheets(i).Name = "Prova" Then Application.DisplayAlerts = False Sheets("Prova").Delete Application.DisplayAlerts = True Exit For End If Next i End SubCiao Alex è perfetta solo un'osservazione avendo messo (Exit For ) avrei tolto il -1 da For i = 1 To ThisWorkbook.Sheets.Count - 1 così arriva fino all'ultimo foglio , in ogni modo il Foglio Temp normalmente lo mette all'inizio un volta eliminato il foglio esce dal For , ma se per caso dovesse trovarsi come ultimo figlio !
Grazie a tutti per i vostri consigli
avrei tolto il -1 da For i = 1 To ThisWorkbook.Sheets.Count - 1
Giusto...un refuso tra copia e incolla di pezzi di codice
-
AutoreArticoli
