ProgressBar

  • Progress bar di Apoben64
    Ciao a tutti, stò ricercando il modo di poter creare un'applicazione che mi consenta di visualizzare l'avanzamento di una macro o l'esecuzione di un comando, tipo una progress bar quella che si vede nei downloads , magari utilizzando una userform. chiedevo se qualcuno ha qualche idea o desidera portare avanti questo progetto con me !
    si può fare ?
    qualche idea ?

    di Mauro
    X ora ti giro 2 esempi di userformche utilizzano progressbar.
    spero ti possano essere utili.
    a dispo x ulteriori domande
     
    ' Codice Userform contenente una ProgressBar ed un CommandButton 
    Private Sub CommandButton1_Click()
    
    Dim Conta, riga, colonna As Integer
        
    'Imposta il valore minimo
        ProgressBar1.Value = ProgressBar1.Min
    
    'Esegue il ciclo di incremento.
        riga = 1
        colonna = 0
        For Conta = 1 To 100
            ProgressBar1.Value = Conta
            colonna = colonna + 1
            resto = Conta Mod 10
            If resto = 0 Then
                riga = riga + 1
                colonna = 1
            End If
            Cells(riga, colonna).Value = Conta
        Next Conta
    
        ProgressBar1.Value = ProgressBar1.Min
    
    End Sub
    
    
    ' Codice Userform contenente una ProgressBar ed 2 CommandButton ed un pulsante di uscita
    Private Sub CmdEsci_Click()
    Unload Me
    End Sub
    
    Private Sub CommandButton1_Click()
    Dim Counter As Integer
        Dim Workarea(1000) As String
        ProgressBar1.Min = LBound(Workarea)
        ProgressBar1.Max = UBound(Workarea)
    
    
    'Imposta il valore della proprietà Progress su Min.
        ProgressBar1.Value = ProgressBar1.Min
    
    'Esegue il ciclo nella matrice.
        For Counter = LBound(Workarea) To UBound(Workarea)
            'Imposta i valori iniziali per ciascun elemento
            'della matrice.
            'Workarea(Counter) = "Valore iniziale" & Counter
    
            ProgressBar1.Value = Counter
        Next Counter
    
        ProgressBar1.Value = ProgressBar1.Min
    
    End Sub
    
    Private Sub CommandButton2_Click()
    Dim Conta As Integer
        
    'Imposta il valore minimo
        ProgressBar1.Value = ProgressBar1.Min
    
    'Esegue il ciclo di incremento.
        For Conta = 1 To 9999
            ProgressBar1.Value = Conta
        Next Conta
    
        ProgressBar1.Value = ProgressBar1.Min
    
    End Sub

    Ciao mauro di Apoben64
    Ti ringrazio della tua risposta !
    ovviamente ho preso in considerazione i listati che mi hai trasmesso, ma vorrei che prima analizzassi questo codice su cui stò lavorando , che ho trovato nel web.
    infatti mi sfuggono alcuni aspetti di base:
    1)ho visto che la velocità dipende dal numero dei cicli che si indicano (ingtotale e su ingimod), tanto più i valori sono bassi e più l'avanzamento della progressbar è veloce .
    2)provando ad inserire all'interno del listato, che nel presente codice è un semplice copia incolla , delle macro od istruzioni che a loro volta all'interno abbiamo ulteriori cicli
    il tutto s'impalla o si avvia un esecuzione da tempi biblici.
    nel senso che non capisco ancora come si debba inteargire (od allacciare) il progressbar e il codice di cui voglio la visulizzare l' esecuzione .
    mi sembra di essermi incartato anche nell'esporti il tutto.
    un grazie per il tuo aiuto !
     
    Option Explicit
    
    Sub StartProcessing1()
    ' displays a progress bar while a macro runs, requires a reference to MSCOMCTRL.OCX
    Dim lngTotal As Long, lngI As Long
        ' initiate progressbar
        Load frmProgressBar1
        With frmProgressBar1
            .ProgressBar1.Scrolling = ccScrollingStandard ' or ccScrollingSmooth
            .Show ' set the UserForms ShowModal property to false before running
            ' or .Show False
        End With
        UpdateProgressBar1 0, "Processing..." ' set initial progress status
        ' start the process
        lngTotal = 3
        For lngI = 1 To lngTotal
            If lngI Mod 1 = 0 Then '
                UpdateProgressBar1 lngI / lngTotal * 100, "Processing " & Format(lngI / lngTotal, "0%") & "..."
            End If
    Worksheets("FOGLIO1").Select ' istruzioni da eseguire
    Range("A1:E10").Select
    Selection.Copy
    Worksheets("FOGLIO2").Select
    Range("A1:E10").Select
    ActiveSheet.Paste
            Next lngI
        ' clean up
        frmProgressBar1.Hide
        Unload frmProgressBar1
    End Sub
    
    Private Sub UpdateProgressBar1(NewValue As Single, Optional NewCaption As String)
    ' updates the progressbar dialog
        With frmProgressBar1
            If Not IsMissing(NewCaption) Then .Caption = NewCaption
            .ProgressBar1.Value = NewValue
            If NewValue = 0 Then .Repaint
        End With
    End Sub
    
    
     
    

    di Mauro
    Ciao luca, ho provato il tuo codice anche aumentando lngtotal e mi sembra funzioni bene! puoi spedirmi il codice che si impalla!

    Per mauro di Apoben64
    Grazie mauro, ho risolto !.
    ho capito che gli altri cicli presenti nella macro devono integrarsi a quelli della progress bar. in questo modo l'interazione è univoca , così come il tempo di esecuzione !

    di Mauro
    Ciao luca, se fossi così gentile da spedirmi comunque il file te ne sarei grato. magari tramite il nuovo servizio ftp. ciao e grazie

    Per mauro di Apoben64
    Ok , caricamento avvenuto con successo!!!.
    ti ho inviato il file, ciao e buona giornata, luca !

    di Mauro
    Grazie luca quando ho un attimo di tempo lo visionerò.