Login Registrati
Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #53203 Score: 0 | Risposta

    Oscar
    Partecipante
      45 pts

      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.
      #53205 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        Forse con un ciclo scorri la collezione dei fogli e se trova il foglio "Prova" allora lo elimina

        #53206 Score: 0 | Risposta

        Raffaele53
        Partecipante
          23 pts

          Penso sia meglio cosi in CommandButton1_Click()
          >>>Application.DisplayAlerts = False
          >>>Sheets("Prova").Delete
          >>>Application.DisplayAlerts = True

          Scusami 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").Delete

          #53207 Score: 0 | Risposta

          Oscar
          Partecipante
            45 pts

            Raffaele53 ha scritto:

            Penso sia meglio cosi in CommandButton1_Click() >>>Application.DisplayAlerts = False
            >>>Sheets("Prova").Delete
            >>>Application.DisplayAlerts = True

            Ciao 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  

            #53208 Score: 0 | Risposta

            scossa
            Partecipante
              37 pts

              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 Sub
              
              #53209 Score: 0 | Risposta

              Oscar
              Partecipante
                45 pts

                Ciao 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 Sub
                #53210 Score: 0 | Risposta

                alexps81
                Moderatore
                  58 pts

                  Ciao @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 Sub
                  #53211 Score: 0 | Risposta

                  Oscar
                  Partecipante
                    45 pts

                    Ciao 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

                    #53212 Score: 0 | Risposta

                    alexps81
                    Moderatore
                      58 pts

                      Oscar ha scritto:

                      avrei tolto il -1   da   For i = 1 To ThisWorkbook.Sheets.Count - 1

                      Giusto...un refuso tra copia e incolla di pezzi di codice   

                    Login Registrati
                    Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
                    Rispondi a: Eliminare foglio Temp
                    Gli allegati sono permessi solo ad utenti REGISTRATI
                    Le tue informazioni: