verifica codice



  • verifica codice
    di ema89 (utente non iscritto) data: 11/12/2014 16:35:13

    Salve a tutti, mi trovo difronte a questo tema d'esame:
    Scrivere la sub quesito2() che
    ' - legge in parallelo le righe 1 e 2 e scrive nella colonna A, a partire dalla
    ' riga 5:
    ' - se i tipi dei valori nella stessa colonna delle righe 1 e 2
    ' sono numerici, la loro somma (usare IsNumeric() per la verifica);
    ' - se i tipi dei valori nella stessa colonna delle righe 1 e 2
    ' sono entrambi Date, la data piu' recente (usare isDate() per la verifica e
    ' ricordarsi che le date si confrontano con gli stessi operatori usati
    ' per i numeri)
    ' - negli altri casi il valore con piu' caratteri (usare la funzione Len()).
    ' Le operazioni terminano quando le righe 1 e 2 di una stessa colonna sono vuote
    ho scritto un codice plausibile ma non ne sn sicuro, potreste dirmi per favore se è corretto o se ho fatto qualche errore. Grazie in anticipo a chi mi darà una risp
     
    Sub quesito2()
     Dim rg As Integer, col As Integer, i As Integer, somma As Double, recente As Date, carattere As String
     somma = 0
     i = 5
     For rg = 1 To 2
     col = 1
    Do While Not IsEmpty(Cells(rg, col))
    If IsNumeric(Cells(rg, col).Value) Then
    somma = somma + Cells(rg, col).Value
    ElseIf IsDate(Cells(rg, col).Value) Then
     If Cells(1, col).Value < Cells(2, col).Value Then
    recente = Cells(2, col).Value
      Else
    recente = Cells(1, col).Value
        End If
    Else
    If Len(Cells(1, col).Value) > Len(Cells(2, col).Value) Then
    carattere = Cells(1, col).Value
    Else
    carattere = Cells(2, col).Value
    End If
    End If
    col = col + 1
    Loop
    Cells(i, 1) = somma
    Cells(i + 1, 1) = carattere
    Cells(i + 2, 1) = recente
    Next
    
    End Sub
    



  • di lepat (utente non iscritto) data: 11/12/2014 16:53:41

    se non fosse stato un problema (scritto da uno str....) e l'avessi scritta tu la domanda non ti avrei risposto, per quello che ho capito (molto poco) sei stato anche troppo bravo, ma non ne sono certo.



  • di Lucas87 data: 11/12/2014 17:03:09

    Ciao
    Se il codice è corretto credo lo possa verificare tu da solo.
    Che esista un sistema più adeguato per eseguire le stesse operazioni è molto probabile, ma quasi sicuramente si andrebbero a usare funzioni che magari non hai ancora imparato e quindi si capirebbe che qualcuno ti ha aiutato.
    Quindi rispondi tu alla domanda. Il codice funziona?
    In caso contrario potresti allegare un file di prova e si potrebbe cercare di capire il motivo, mantenendo la struttura del tuo codice.



  • di ema89 (utente non iscritto) data: 11/12/2014 18:33:39

    si il codice và ...solo che non so se sia la maniera più efficacie x risolverlo, comunque non mi veniva in mente un altro metodo x farlo e volevo capire se era possibile. grazie lo stesso per la risp



  • di scossa data: 11/12/2014 21:26:20

    Senza entrare nel merito della struttura del codice, perché come ha detto giustamente lucas87 "Che esista un sistema più adeguato per eseguire le stesse operazioni è molto probabile, ma quasi sicuramente si andrebbero a usare funzioni che magari non hai ancora imparato e quindi si capirebbe che qualcuno ti ha aiutato. " però un consiglio te lo voglio dare, visto che l'ho già detto molte volte:
    dichiarare come integer le variabili che devono rappresentare valori di righe o colonne è sbagliato visto che l'interprete VBA le deve convertire implicitamente in Long, quindi anziché
    Dim rg As Integer, col As Integer, i As Integer
    è molto meglio
    Dim rg As Long, col As Long, i As Long



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)







  • di lepat (utente non iscritto) data: 11/12/2014 21:36:26

    e poi indentare il codice per una migliore leggibilità