06/03 23:22
Carlo
Postato originariamente da maurizio74:
Ciao Carlo,
sembra funzionare tutto solamente che esce e mi chiude il form come mai???
ho provato a mettere stop e return al posto di end ma poi lo blocca...
grazie
Ciao Carlo,
sembra funzionare tutto solamente che esce e mi chiude il form come mai???
ho provato a mettere stop e return al posto di end ma poi lo blocca...
grazie
Come già ti avevo anticipato in un post precedente end in VBA termina la macro e i valori restano visibili sul foglio Excel. In VB6 end termina il programma e i valori scritti sulle text non sono più consultabili.
Visto che l'end è all'interno di una funzione ricorsiva e che viene attivato dal risultato di una funzione che viene lanciata solo quando dimensione è uguale a uno, aggirare il problema non è banale.
La prima idea che mi è venuta in mente è dichiarare una variabile booleana pubblica:
Dim fatto As Boolean
poi quando dimensione è uguale a uno lanciare la funzione che imposta fatto.
Fatto evita di eseguire la ricorsione mentre viene completato il ciclo.
Sub permutazioni(vettore() As Variant, dimensione As Long, n As Long) Dim i As Long If fatto Then Exit Sub ' termina la ricorsione If dimensione = 1 Then fatto = risultato(vettore) ' memorizzo in fatto il valore booleano ritornato Exit Sub End If For i = 1 To dimensione Call permutazioni(vettore(), dimensione - 1, n) If dimensione Mod 2 = 1 Then Call Scambio(vettore(), 1, dimensione) Else Call Scambio(vettore(), i, dimensione) End If Next End Sub
Sicuramente scrivendo il codice da zero, l'approcio sarebbe molto diverso, ma visto che mi sono riproposto di rendere il codice VB6 più simile possibile all'Excel, direi che va bene così.
Sono molto contento di come hai completato il codice partendo dagli esempi.
Ultima modifica effettuata da Carlo 06/03 23:32
in programmazione tutto è permesso