Sviluppare funzionalita su Microsoft Office con VBA Come creare una barra di avanzamento (progress bar)

LoginRegistrati
Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
  • Autore
    Articoli
  • #7119 Risposta

    vecchio frac
    Senior Moderator
    • Sfida #1
      168 pts

      E' importante che i nostri programmi siano amichevoli e orientati all'utente. I nostri utilizzatori (anche noi stessi! perché no?) non devono sentirsi frustrati davanti a schermate confuse, testi incomprensibili, pulsanti che non spiegano a cosa servono. Anche le attese davanti al monitor, in attesa del completamento di una qualche lunga operazione, sono snervanti e fonte di frustrazione per gli utenti.....

      [Leggi tutto al seguente link: https://www.excelvba.it/forumexcel/progress-bar-vba/]

      #7159 Risposta
      Marius44
      Marius44
      Moderatore
      • Sfida #4
        11 pts

        Ciao

        Innanzi tutto grazie per la condivisione dell'ottimo lavoro.

        Una cosa, però, non mi è chiara (o, meglio, non ne ho conoscenza).

        Non vedo alcun codice nel Modulo di classe del Foglio e non riesco a capire come fa VBA ad applicare la relativa macro al click sulla combinazione dei tasti indicati.

        Grazie ancora e ciao,

        Mario

        #7160 Risposta

        vecchio frac
        Senior Moderator
        • Sfida #1
          168 pts

          Ciao Supermario,

          VBA non c'entra niente, è una funzionalità di Excel che associa dei tasti di scelta rapida alle macro 🙂

          Dopo aver costruito il codice, vai in Sviluppo >> Macro, scegli la macro che desideri e quindi il pulsante Opzioni, dove potrai associare un tasto alla macro insieme a Ctrl-Shift.

          Non voglio offendere la tua competenza ma un'immagine mi spiega meglio:

          seehere

          #7161 Risposta

          vecchio frac
          Senior Moderator
          • Sfida #1
            168 pts

            Tra parentesi forse si può fare anche via codice, dovrei documentarmi 🙂

            #7162 Risposta
            Marius44
            Marius44
            Moderatore
            • Sfida #4
              11 pts

              Ciao VF

              Ammetto che non conoscevo questa funzionalità.

              Forse ci sarei dovuto arrivare ricordando la finestra di dialogo che si apre quando "registri" una macro.

              Credo anch'io che ci si possa arrivare anche tramite codice ma così è più ... figo  😆 

               

              Grazie e ciao,

              Mario

              #7166 Risposta

              vecchio frac
              Senior Moderator
              • Sfida #1
                168 pts

                vecchio frac wrote:forse si può fare anche via codice, dovrei documentarmi

                Che stupidello che sono, è una cosa che avevo già fatto, senza saperlo, in altri contesti 🙂

                In pratica basta utilizzare adeguatamente il metodo OnKey.

                Supponiamo che nel modulo1 ci sia una sub di test.

                In Thisworkbook, all'apertura, quindi nel suo evento Workbook_Open, possiamo mettere l'istruzione

                Application.OnKey “^w”, “test”

                e il gioco è fatto: alla pressione di Ctrl-W si avvia la sub di test.

                Per ripristinare il comportamento normale basta assegnare, all'uscita da Excel, la stringa nulla al metodo OnKey:

                Application.OnKey “^w”, “”

                La guida di Excel è esaustiva sia sui nomi dei caratteri speciali (ESC, TAB, F1, ecc) sia sugli esempi che si possono creare.

                #9452 Risposta

                Mario

                  Complimenti per il sito, articolo simpatico... 

                  stavo provando un pò il funzionamento del codice, ma ho qualche problema con la userform in quanto il programma mi da un errore di compilazione: impossibile trovare il metodo o il membro dei dati, su ProgressBar1.

                  Quale potrebbe essere il problema?

                  Grazie 

                  #9457 Risposta

                  vecchio frac
                  Senior Moderator
                  • Sfida #1
                    168 pts

                    Esattamente, su quale linea di codice?

                    Hai verificato di aver reso disponibile la libreria Common Controls 6.0? (Editor di codice, Strumenti, Riferimenti). Se non è attiva la puoi caricare con sfoglia e cercando nella cartella di sistema il file MSCOMCTL.OCX.

                    #19115 Risposta

                    Ciao VF,

                    ottimo post, molto interessante! Ho cercato subito di implementarlo per "farmi un po' le ossa" in una macro sulla quale mi ha già dato un super-aiuto Mario che vedo qui tra i partecipanti.

                    Quello che fa la macro, come potrai vedere è di salvare separatamente i fogli di un determinato file excel. 

                    Il tread è questo: https://www.excelvba.it/forumexcel/forums/discussione/salvare-fogli-rename-su-un-altro-file/

                    Vorrei chiederti una mano perché ho implementato alcune modifiche (la barra è quella con il form) :

                    1) vorrei che il "contatore" non fosse legato al valore di una cella (nell'esempio è 7 ), ma ad un parametro variabile del file (ex il numero di fogli da salvare) >> quindi ho aggiunto un paio di comandi nel form (è corretto? Manca qualcosa?):

                    Dim n As Integer
                    ....
                    
                        'n = il tempo impostato
                        n = Application.Sheets.Count + 10
                    ....

                    2) ho problemi ad inserire nella giusta posizione della  macro il comando, perché se la metto prima del ciclo parte la barra di aggiornamento e alla fine parte il salvataggio dei foglio, se la metto nel ciclo, ovviamente si ripete ad ogni salvataggio. ho provato a togliere il comando "DoEvents" dal form, ma anche in quel caso non funziona....

                    perc = ActiveWorkbook.Path & "\"
                    percorso = perc & "DIL.xlsx"
                    Workbooks.Open percorso
                    
                    UserForm1.Show
                    
                    For i = 1 To ActiveWorkbook.Sheets.Count
                        With Sheets(i)
                        
                            If .Range("B8") <> "" Then
                                .Cells.Copy 'copia il foglio
                                Workbooks.Add 'crea un nuovo file
                                ActiveSheet.Paste 'incolla i dati
                    
                                'rinomina il file e lo salva
                                NuovoFile = "DIL " & Range("A3").Value & " " & Range("A6").Value & ".xlsx"
                                ActiveWorkbook.SaveAs Filename:=perc & NuovoFile
                                ActiveWorkbook.Close 'chiude il file appena salvato
                            End If
                        End With
                    
                    Next i
                    
                    
                    perc1 = ActiveWorkbook.Path & "\"
                    percorso1 = perc1 & "DIL.xlsx"
                    Workbooks.Open percorso
                    
                    
                    NuovoFile1 = "_DIL " & Range("A6") & ".xlsx"
                    ActiveWorkbook.SaveAs Filename:=perc1 & NuovoFile1
                    
                    ActiveWorkbook.Close 'chiude il file appena salvato
                    
                    End sub
                    

                    Grazie mille!!!

                    #19145 Risposta
                    Guidoc
                    Guidoc
                    Partecipante

                      Bellissimo, io avrei optato per il 3 approccio ma non so come gestire lo userform e collegarlo alla macro

                      #19153 Risposta
                      Guidoc
                      Guidoc
                      Partecipante

                        Guidoc ha scritto:

                        Bellissimo, io avrei optato per il 3 approccio ma non so come gestire lo userform e collegarlo alla macro

                        Ciao vecchio frac, mi puoi aiutare?

                        #19157 Risposta

                        vecchio frac
                        Senior Moderator
                        • Sfida #1
                          168 pts

                          ildavepablo ha scritto:

                          Vorrei chiederti una mano perché ho implementato alcune modifiche (la barra è quella con il form) :

                          Guidoc ha scritto:

                          mi puoi aiutare?

                          @ildavepablo, @guidoc:

                          sono rientrato da poco e mi sto pareggiando con le discussioni non lette. Qui siamo in un (vecchio) articolo e preferirei che apriste una discussione apposita per ciascuno dei vostri problemi, in una sezione del forum, perchè le osservazioni all'articolo dovrebbero essere pertinenti ad esso e non su casi dell'utente. 

                          Poi, più che volentieri, se ne sono capace 🙂

                          Grazie

                          #19211 Risposta
                          Guidoc
                          Guidoc
                          Partecipante

                            io l'avevo creato: #19131

                          LoginRegistrati
                          Stai vedendo 13 articoli - dal 1 a 13 (di 13 totali)
                          Rispondi a: Come creare una barra di avanzamento (progress bar)
                          Gli allegati sono permessi solo ad utenti REGISTRATI
                          Le tue informazioni:



                          vecchio frac - 2569 risposte

                          albatros54
                          albatros54 - 680 risposte

                          patel
                          patel - 594 risposte

                          Marius44
                          Marius44 - 486 risposte

                          Luca73
                          Luca73 - 480 risposte