Dal linguaggio C al VBA



  • Dal linguaggio C al VBA
    di Slayer data: 15/02/2015 11:53:36

    Buongiorno,
    sono un nuovo utente di questo forum e sono alle primissime armi con il VBA, sono qui per chiedere qualche delucidazione sul come riuscire a gestire alcuni risultati, traducendo un mio codice in linguaggio C in VBA. Dopo qualche tentativo sono riuscito in parte a produrre qualcosa di concreto ma che soddisfa solo in parte le mie condizioni. Mi spiego con un esempio inserendo il valore nella mia textbox un numero con valore di 600 in una cella mi viene restituito il valore di 75 ma , nel mio codice in C con l'istruzione " break " riesco a uscire al primo risultato utile che soddisfi le mie condizioni.
    Codice in C:

    1 #include
    2
    3 int main(){
    4 //dichiarazione delle variabili
    5 int numero, i, resto;
    6
    7 printf("inserire il numero da dividere: ");
    8 scanf("%d", &numero); // legge intero digitato
    9
    10 for(i=60; i<=85; i++)
    11 {
    12 resto= numero%i;
    13 if (resto==0){
    14 printf("passo i: %d ", i);
    15 break; // si ferma al primo risultato che trova
    16 } // chiude if
    17 } // chiude il ciclo for
    18 return 0;
    19 }


    Spero di essere sufficientemente chiaro e nell'attesa vi auguro una buona giornata e Vi ringrazio per l'attenzione.
     
    Private Sub cmdcalcola_Click()
    Dim x As Integer
    'inizia il ciclo di iterazione
    For x = 60 To 85
        If TxtNumero.Value Mod x = Int(0) Then
        Cells(2, 3) = x
        End If
    Next x
    'chiude il form
    Unload Me
    End Sub
    



  • di Vecchio Frac data: 15/02/2015 12:09:55

    In VBA l'equivalente è la parola chiave "Exit" che è utilizzata nei cicli per interromperne il flusso e a livello di Sub/Function per provocare l'interruzione della procedura stessa.
    Quindi "Exit For" e "Exit Do" escono dai rispettivi cicli For e Do, mentre "Exit Sub" e "Exit Function" escono da una sub e da una function rispettivamente.
     
    Private Sub cmdcalcola_Click()
    Dim x As Integer
    'inizia il ciclo di iterazione
        For x = 60 To 85
            If TxtNumero.Value Mod x = 0 Then      '<<< Int(0) è un overload inutile
                Cells(2, 3) = x
                Exit For     ' <<<<  esce dal ciclo For e riprende da Unload Me
            End If
        Next x
        'chiude il form
        Unload Me
    End Sub






  • di Slayer data: 15/02/2015 12:22:20

    Grazie mille per l'illuminante spiegazione VFrac