Lanciare processi in parallelo VBA
Hai un problema con Excel?
| In parallelo di il piccolo
Alex |
| vorrei creare un'applicazione che esegua due
istruzioni in parallelo... come posso fare? |
|
| di Oceanoblue |
La Tua domanda è generica. Puoi essere più
preciso? |
|
| di il piccolo Alex |
la mia intenzione è di visualizzare una progressBar
che avanza in una maschera nuova mentre il resto del programma
esegue altre operazioni per ora mi sono arrangiato cioè ho calcolato
il numero di operazioni da effettuare e poi ho fatto in modo che il
programma esegua un'istruzione e vada un po' avanti con la
progressBar, esegua un'istruzione e vada un po' avanti con la
progressBar... e così via fino a finire sia le operazioni che la
progressBar... il codice che ne salta fuori è un disastro e
difficile da capire... aiuto!!
|
|
| di Oceanoblue |
In effetti è complicato. Se ho ben capito, ti
consiglio di semplificare la funzione scindendola. Crea le
funzioni singolarmente e indipendenti, poi alla fine delle funzioni
poni il commando "Call nome-routine", così da creare la progressione
tra gli eventi che ti servono. Lo sò è un po generico. Il mio è
solo un consiglio. Prova e faci sapere. |
|
| di Mauro |
Se non ho capito male, tu hai una gestione tipo
questa:
'Associato ad una Userform contenente una
progressbar ed un pulsante. 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
…ma questa gestione non ti
soddisfa perchè tu vorresti lavorare con 2 processi separati e
paralleli. Ovvero in multithreading. Sbaglio?
|
|
| di il piccolo Alex |
Grazie per il consiglio...appena letto il tuo
messaggio l'ho messo in pratica e... qualcosa di simile a
quello che volevo è finalmente giunto sullo schermo probabilmente è
meglio se ci lavoro su ancora un po'... comunque grazie il tuo
aiuto è stato molto utile |
|
| per mauro di il piccolo
Alex |
No non sbagli per niente... la mia intenzione
sarebbe proprio quella perchè fino a qualche giorno fa veniva
eseguita prima un'operazione e poi un'altra... se puoi darmi
qualche dritta sul multithreading te ne sarei molto grato... |
|
| di Mauro |
La programmazione multithreading è uno dei punti di
forza del linguaggio Java e permette di gestire in un’applicazione
più processi contemporaneamente. Purtroppo però non mi risulta che
questo sia possibile anche nell’ambiente VBA. L’unica cosa è
cercare di gestire il problema con l’approccio consigliato da
Oceanoblue, tuttavia si tratta solo di gestire la proprietà value
della progressbar.
|
|
| di il piccolo Alex |
| Grazie per l'interessamento, e comunque grazie ai
suggerimenti che mi avete fornito sono riuscito a migliorare un po'
il codice... almeno ora è leggibile |
|
|
Vuoi approfondire questo argomento?