Newsgroup: it.comp.lang.visual-basic
Titolo: uscire da un ciclo in esecuzione con un bottone

Ehilà!!!
Dunque. Ho un ciclo For...Next e l'irresistibile bisogno di
uscirne quando faccio clic su un pulsante, o comunque in una maniera in cui
possa decidere io quando. 
Il problema è che se clicco su tale pulsante VB
prima finisce il ciclo poi esegue il codice del pulsante (in cui modifico
una variabile che, controllata dal ciclo, me lo interromperebbe).
Auguro
una calda e spassosa estate a tutti quelli che mi tireranno fuori dalla
m....
 (A tutti gli altri pronostico soltanto qualche pioggerellina...)
--------------------------------
Inviato via 
http://usenet.iol.it

 una variabile che, controllata dal ciclo, me lo interromperebbe).
dim fine as boolean
Sub bottone_click
fine=1
End Sub
Nel tuo ciclo:
For .......
........
Doevents
if fine then exit for
Next

Io proverei ad eseguire il ciclo non con un For..Next ma dentro un Timer, x
es. mettendo un Timer, una Textbox, e 2 bottoni (cmdStart e cmdStop):
Dim numCicli, numMaxCicli As Integer
Dim IsStop As Boolean
Private Sub cmdStart_Click()
  IsStop = False
  Timer1.Enabled = True
End Sub
Private Sub cmdStop_Click()
  IsStop = True
  Timer1.Enabled = False
End Sub
Private Sub Form_Load()
  numCicli = 0
  numMaxCicli = 100
  IsStop = True
End Sub
Private Sub Timer1_Timer()
  If numCicli >= numMaxCicli Then
    IsStop = True
    Timer1.Enabled = False
  End If
  If Not (IsStop) Then
    numCicli = numCicli + 1
    'metti qui quello che devi fare, ad esempio
    'faccio visualizzare i numeri da 1 a 100 nella Textbox:
    Text1.Text = numCicli
    Text1.Refresh
  End If
End Sub
Il tutto equivarrebbe ad un ciclo:
For numCicli = 1 to numMaxCicli
   Text1.Text = numCicli
   Text1.Refresh
next numCicli
NB: + diminuisci la proprietà interval del Timer, + il ciclo verrà eseguito
velocemente!!!
Se provi a premere Stop e Start vedrai che il conto si ferma e riparte
finchè non arriva a numMaxCicli (cioè 100 in questo caso).
Spero che questa soluzione artigianale ti possa andare bene.
Ciao
Duccio
http://www.catenaia.cjb.net


es. mettendo un Timer, una Textbox, e 2 bottoni (cmdStart e cmdStop):
Come uccidere una zanzara con un bazooka...
Ciao,
Moreno
-- 
sirri at morenosoft dot com
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

La tua soluzione andrebbe anche bene... La cosa comica è che se potevo
utilizzare il timer non avevo nemmeno bisogno del ciclo. Mea Culpa, non ho
precisato che utilizzo VBA per Excel in cui, almeno credo, non è
disponibile il timer(spero di non essere stato così somaro da non
trovarlo).
Per precisare il ciclo For...Next mi serviva per rallentare il
computer; al suo interno non c'era niente di utile. In pratica mi sono
costruito un timer artigianale.
Grazie milleduecentotrentasette lo
stesso. Ciao!!


 disponibile il timer(spero di non essere stato cosě somaro da non


 disponibile il timer
[...]
    Sub OnTime( _
        EarliestTime _
      , Procedure As String _
      , [LatestTime] _
      , [Schedule])
        Membro di Excel.Application
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------