Formattazione condizionale con VBA

Storico discussioni

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ò.

Cognolato Studio © 2005