sintassi ciclo for



  • sintassi ciclo for
    di adriprivate data: 11/06/2013 11:19:58

    Ciao ragazzi e buon inizio settimana..

    Volevo capire una cosa...
    esempio

    dim a as integer
    dim risultato1 as double,....... risultato8 as double
    dim costo1 as double,........ costo8 as double
    dim matrice as double

    matrice = "0.4"
    costo1 = labelxxxxx 'assegno in una variabile dei valori presenti in delle label
    costo2 = labelyyyyy
    ...
    costo8 = labelzzzzz


    'calcolo il vari risultati dividendo i valori di due variabili e li asseno a delle altre label denominate lbl1, lbl2......lbl8
    For a = 1 To 8
    risultato(a) = costo(a) / matrice
    UserForm1.Controls("LBL" & (a)) = risultato(AA)
    risultato(a) = CSng(Replace("LBL" & (a), ".", ","))
    Next


    La sintassi corretta per assegnare ad una variabile il nome risultato(1)... risultato(8) costo(1).... costo(8), ed ad una label lbl(1)... lbl(8) qual'è?

    Nei vostri precedenti post o visto che avete usato .controls per le label mentre per le variabili semplicemente nomevariabile(a)....
    Mi avevate anche consigliato di non rinominare le label o le texbox e con il comando set inserirle in una variabile, ma salvo che non sia indispensabile, dovrei rinominare mezzo programma...
    Spero di essere stato chiaro..

    Sotto codice vba che sto provando a modificare con il ciclo for..


    Buona giornata!
     
    If CheckBox04 = True Then
    matrice = "0,4"
    
    
    risultato1 = Round(costo1 / matrice, 2)
    LBL1.Caption = risultato1
    risultato1 = CSng(Replace(LBL1, ".", ","))
    
    risultato2 = Round(costo2 / matrice, 2)
    LBL2.Caption = risultato2
    risultato2 = CSng(Replace(LBL2, ".", ","))
    
    risultato3 = Round(costo3 / matrice, 2)
    LBL3.Caption = risultato3
    risultato3 = CSng(Replace(LBL3, ".", ","))
    
    risultato4 = Round(costo4 / matrice, 2)
    LBL4.Caption = risultato4
    risultato4 = CSng(Replace(LBL4, ".", ","))
    
    risultato5 = Round(costo5 / matrice, 2)
    LBL5.Caption = risultato5
    risultato5 = CSng(Replace(LBL5, ".", ","))
    
    risultato6 = Round(costo6 / matrice, 2)
    LBL6.Caption = risultato6
    risultato6 = CSng(Replace(LBL6, ".", ","))
    
    risultato7 = Round(costo7 / matrice, 2)
    LBL7.Caption = risultato7
    risultato7 = CSng(Replace(LBL7, ".", ","))
    
    risultato8 = Round(costo8 / matrice, 2)
    LBL8.Caption = risultato8
    risultato8 = CSng(Replace(LBL8, ".", ","))
    Else
    
    For a = 1 To 8
    UserForm1.Controls("lbl" & (a)) = ""
    Next a
    
    End If


  • rettifica
    di adriprivate (utente non iscritto) data: 11/06/2013 17:21:40

    rettifica
    quello che voglio capire non è come dichiararle nelle variabili ma come scriverle nel codice..

    For a = 1 To 8
    risultato(a) = costo(a) / matrice
    UserForm1.Controls("LBL" & (a)) = risultato(AA)
    risultato(a) = CSng(Replace("LBL" & (a), ".", ","))
    Next

    E' corretto?!



  • di mabolsie data: 11/06/2013 18:58:43

    Cari Amici VF e Mauro
    Il nostro comune amico adriprivate ha aperto la sua discussione nella risposta alla discussione di Valeria80 (andate a vedere ) quindi ho ritenuto opportuno estrapolare la discussione di adri da quella di Valeria80 altrimenti neanche lui l'avrebbe trovata.

    Se ho sbagliato punitemi !!!!

    @ Adriprivate

    ATTENTO a dove posti le discussioni perchè altrimenti potresti non avere risposte in quanto nascosto dal nome della della discussione in cui ti sei incapsulato.

    Ciao a tutti Max



  • di mabolsie data: 11/06/2013 19:04:02

    Ciao Adri

    teoricamente è giusto , lo hai testato ??

    Provalo

    ciao Max




  • di Vecchio Frac data: 11/06/2013 19:44:40

    Dimensionando correttamente le matrici...
    Dim risultato (1 to 8) as double, costo (1 to 8) as double

    E perchè risultato(AA)?
    UserForm1.Controls("LBL" & (a)) = risultato(AA)
    la variabile contatore non è semplicemente "a"?

    E perchè mai dopo aver calcolato risultato(a), lo ricalcoli assegnandogli i valore della label, sostituendo addirittura il punto con la virgola? risultato() è un vettore di Double, quindi è un numero, se gli fai un Replace il nostro VBA crede che lo vuoi convertire in testo... e forse ti solleva errore ^_^ (senza dire che è un cast implicito assolutamente inefficiente e inutile)