Domanda recuperare valori da cicli for e next con una determinata condizione

Indigo9

Utente abituale
15 Novembre 2017
134
16
Venezia
2003
0
ciao.
volevo mostrarvi questa mia routine per un suggerimento poi dal titolo sono sicura che non abbiate capito :)

Codice:
Public Class Form1

    Dim risultato As Decimal
    Dim ee As Decimal
    Dim aa As Decimal
    Dim nn As Decimal

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        nn = TextBox3.Text '5(cost)

        For aa = 2 To 10 Step 2

            For ee = 2 To 10 Step 2

                risultato = nn * ((aa + 1) / ee)
               ' formula casuale di esempio


                TextBox1.Text = risultato
                TextBox2.Text = ee
                TextBox3.Text = nn
                TextBox4.Text = aa

            Next

        Next

    End Sub

End Class

io utilizzo due cicli For per far variare due variabili (da 2 to 10 step 2) nella mia formula.
Quello che mi serve dei valori che sono passati per i due for e la variabile "risultato" con il valore minimo tra quelli provati.
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
3.731
63
office pro 2010
43
Hai ragione.
Dopo aver letto ho capito meno di quel che avrei potuto capire se non avessi nemmeno saputo che esistesse il topic :P

Comunq, se ho avuto l illuminazione a te servirebbe una funzione che, datagli in pasto un certo gruppo di valori, essa ti restituisca il più piccolo.

Bene... Non ti servono due cicli annidati ma uno solo.
Ti serve un ciclo ed una variabile in cui infilare il tuo valore.


Immagina di farlo a mano ed avere una scatola.

Prendi un primo oggetto con la mano destra.
È il primo. Quindi non ne hai altri con cui confrontarlo, esso lo metti nella mano sinistra.
Prendi un secondo oggetto sempre con la destra.
Orao puoi confrontare con quello di prima che hai nella sinistra.
Butti il più grande e nella sinistra tieni l altro.
Ora, con la destra puoi prendere un nuovo oggetto e ripetere il confronto...
E cosi via fino alla fine.

Codice:
...
For i as integer = 1 to numerodioggetti -1
   If oggetto(i) > Oggetto(i+1) Then
      NellaScatola = Oggetto(i+1)
   Else
      NellaScatola = Oggetto(i)
   End ig
Next
...
Return nellascatola
 

Indigo9

Utente abituale
15 Novembre 2017
134
16
Venezia
2003
0
ciao dracoscrigno e grazie per la pazienza e nel frattempo ci sono riuscita.

Nel mio caso i FOR sono due, il secondo annidato dentro il primo.
io ho una formula con due oggetti variabili che alla fine dei for devono indicarmi il risultato più basso.

il codice che segue adesso mi funziona, però...
Codice:
Public Class Form1
    Dim R As Decimal
    Dim R_piu_basso As Decimal
    Dim A As Decimal = 2 ' è una costante
    Dim B As Decimal ' variabile da provare
    Dim C As Decimal ' variabile da provare
    Dim variabileB As Decimal
    Dim variabileC As Decimal

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'imposto  R_piu_basso  iniziale molto alto per far funzionare il primo IF
        R_piu_basso = 9999999999999999

        For B = 1 To 10 Step 1

            For C = 1 To 10 Step 1


                R = A * ((B + 1) / C) ' formula

                If R < R_piu_basso Then

                    'MEMORIZZO I VALORI CHE DANNO R PIU BASSO
                    R_piu_basso = R
                    variabileB = B
                    variabileC = C

                End If

            Next

        Next

        MsgBox("risultato di R piu basso e " & R_piu_basso & " si ottiene con A=" & A & " B=" & variabileB & " C=" & variabileC)

    End Sub

End Class
...però,
in questo codice di esempio ottengo quello che voglio ma, faccio variare due oggetti B e C in un intervallo breve, tra 1 e 10.
Se questi intervalli fossero più ampi potrei avere problemi con i tempi per questo volevo capire se qualcuno utilizza un metodo diverso per FOR.
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!