Condividi:        

Inserimento ActiveX progressBar

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Inserimento ActiveX progressBar

Postdi hayabusa_65 » 16/11/10 12:46

Buongiorno a tutti.

Devo lanciare una routine in excell che dura parecchio, si tratta di un ciclo for che va da 1 a a n in cui n potrebbe assumere un valore molto grande (qualche centinaio).
Vorrei inserire una progressbar che mi dica lo stato di avanzamento del ciclo.
Chiedo a voi, è possibile?
Grazie a tutti.
hayabusa_65
Utente Junior
 
Post: 29
Iscritto il: 18/10/10 10:43

Sponsor
 

Re: Inserimento ActiveX progressBar

Postdi Flash30005 » 16/11/10 13:28

Invece di usare un oggesto potresti usare la barra di excel (status bar)
Ti invio la macro come test, toglierai le righe-codice relative al timer
Codice: Seleziona tutto
Sub ProgrBar()
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
UR = 100 ' o numero di righe
For NR = 1 To UR

Start = Timer  '<<<< togliere in caso di utilizzo
Pausa = 1  '<<<< togliere in caso di utilizzo
Attendi:   '<<<< togliere in caso di utilizzo
If Timer < Start + Pausa Then GoTo Attendi  '<<<< togliere in caso di utilizzo

Application.StatusBar = "Elaborazione Riga " & NR & " - " & Int(NR / UR * 1000) / 10 & " %"

Next NR
Application.DisplayStatusBar = oldStatusBar
Application.DisplayStatusBar = False
End Sub

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento ActiveX progressBar

Postdi Anthony47 » 17/11/10 02:13

Oltre al suggerimento dettagliato i Flash, suggerisco (a grandi linee):
-ti crei una Userform su cui inserisci una "Cornice" (es Frame1)
-dentro questo frame inserisci una "Etichetta" (es Label1)
-poi dopo che hai ricalcolato l' avanzamento usi qualcos come
Codice: Seleziona tutto
Label1.Width = (Frame1.Width + 10) * progress
Frame1.Caption = Format(progress, "0%")
Nell' esempio progress e' una variabile che contiene un valore variabile tra 0 e 1 che rappresenta il % di avanzamento.
Aprirai la form in modalita' "vbModeless", per poi nasconderla a fine macro.

Se questo livello di informazioni non basta posta ancora spiegando dove sei arrivato.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento ActiveX progressBar

Postdi hayabusa_65 » 17/11/10 17:29

Innanzitutto grazie a tutti e due.
Devo dire che il suggerimento di flash è un pò più di semplice attuazione per quielle che sono lke miue conoscenze.
Il suggerimento di Antony è un pò troppo evoluto per le mie capacità nel senso che non ho mai usato Userform e non mi è ben chiara la procedura da seguire.

Grazie comunque
hayabusa_65
Utente Junior
 
Post: 29
Iscritto il: 18/10/10 10:43

Re: Inserimento ActiveX progressBar

Postdi raimea » 17/11/10 18:18

ho provato la macro di flash ed e' tutto ok
se volessi applicare la stessa macro, cioe' vedere l'avanzamento percent.
mentre viene eseguita una macro, usando la barra di excel ,
applicando quindi la macro di flash all'interno di altre macro
ad esempio a questa:

Codice: Seleziona tutto
Sub squadralfbt()

UserForm1.Show vbModeless

ActiveSheet.Unprotect


Sheets("7-squadr.naz").Select  ' copio le squadre
   
    Range("B2:B308").Select
    Selection.Copy
    Sheets("squadr-alfab").Select
    Range("E7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
       
    Sheets("7-squadr.naz").Select  ' copio le nazioni
   
    Range("A2:A308").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("squadr-alfab").Select
    Range("F7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E4").Select



Range("E7:F308").Select
    Selection.Sort Key1:=Range("E7"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("g2").Select
   
       
       ActiveWindow.DisplayGridlines = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True
   
    Range("g2").Select
   
    Unload UserForm1
   


e' possibile?
come devo impostare i comandi nella macro ?
ringrazio
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1408
Iscritto il: 11/02/10 07:33
Località: lago

Re: Inserimento ActiveX progressBar

Postdi Flash30005 » 17/11/10 20:27

L'uso delle barre (qualsiasi siano) funzionano se effettui un ciclo For... Next che X va da 1 a N
oppure altre transazioni delle quali conosci quante cose deve fare (N) e cosa stai facendo (X)
Il rapporto tra X e N moltiplicato per 100 fa "scorrere" la barra-
Nella tua macro non vedo un processo come descritto ma solo un copia e incolla che normalmente avviene in un "attimo" e la barra funzionerebbe per un attimo ma sparirebbe appena completata la funzione incolla.

Se ho capito male, spiega meglio qual'è il problema

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento ActiveX progressBar

Postdi raimea » 17/11/10 20:51

ok, ho capito come funziona.
grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1408
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "Inserimento ActiveX progressBar":


Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti