Restituire valore da funzione di modulo

di il
6 risposte

Restituire valore da funzione di modulo

Sarà una stupidaggine però non riesco e dopo molti tentativi meglio chiedere
Per non riscrivere lo stesso codice più volte ho giustamente creato nei moduli una funzione, ma non riesco a recuperare i valori da una funzione.
Questo la funzione
Public Function valuta(voto As Double)
Dim qualifica_finale As String
If (VOTO < 6) Then
qualifica_finale = "F"
End If
If (VOTO >= 6) Then
qualifica_finale = "C"
End If
......
.......
End Function
qui dove richiamo la funzione
Private Sub data_AfterUpdate()
 MsgBox qualifica_ssl(Me.VOTO)    
End Sub

6 Risposte

  • Re: Restituire valore da funzione di modulo

    Il valore restituito dalla Function è esattamente il nome della Function stessa. Prima di End Function devi scrivere
    valuta = qualifica_finale

    lucavalentino ha scritto:


    qui dove richiamo la funzione
    Private Sub data_AfterUpdate()
     MsgBox qualifica_ssl(Me.VOTO)    
    End Sub
    Questa non mi convince. Quando chiami una Function da Modulo devi scrivere il nome della Function...però occorre anche capire il contesto generale...
  • Re: Restituire valore da funzione di modulo

    lucavalentino ha scritto:


    ...
    Public Function valuta(voto As Double)
    Dim qualifica_finale As String
    If (VOTO < 6) Then
    qualifica_finale = "F"
    End If
    If (VOTO >= 6) Then
    qualifica_finale = "C"
    
    Facciamo anche che quella If viene scritta con un po' di criterio
    If (VOTO < 6) Then
         qualifica_finale = "F"
    Else
         qualifica_finale = "C"
    End If
    Altrimenti costringi il codice ogni volta a valutare anche la seconda IF, nonostante sia stata magari rispettata la prima e quindi inevitabilmente il voto sia sicuramente inferiore a 6
    Vedo l'uso di un Double per contenere il voto. Spreco di risorse. Integer o Long se non ci sono decimali.
  • Re: Restituire valore da funzione di modulo

    Direi solo

    qualifica_finale = Iif(VOTO<6,"F","C")
  • Re: Restituire valore da funzione di modulo

    Ora a prescindere dal suggerimento di Antonio, che ovviamente ti fa capire quanto inq uesto caso pensare ad una Funzione sia inutile, direi che se una funzione la chiama [Valuta] poi la chiami usando il suo nome non quello che ti passa a caso...!

    Mi riferisco a questo codice che chiama la funzione [qualifica_ssl] che non esiste, ma esiste una Variabile privata "simile" nella Funzione [Valuta]... quindi la questione che si pone è se sai o meno come si usano le funzioni e la differenza con le Variabili...!!!!
    
    Private Sub data_AfterUpdate()
     MsgBox qualifica_ssl(Me.VOTO)    
    End Sub
    Credo manchino le conoscenze minime, quindi non fare cose per le quali serve ancora lavorare, usa in modo più funzionale il suggerimento di Antonio che peraltro è decisamente meglio in questo caso banale.
  • Re: Restituire valore da funzione di modulo

    Philcattivocarattere ha scritto:


    Facciamo anche che quella If viene scritta con un po' di criterio
    If (VOTO < 6) Then
         qualifica_finale = "F"
    Else
         qualifica_finale = "C"
    End If

    @Alex ha scritto:


    Credo manchino le conoscenze minime, quindi non fare cose per le quali serve ancora lavorare, usa in modo più funzionale il suggerimento di Antonio che peraltro è decisamente meglio in questo caso banale.
    Grazie dei consigli, ma ho sempre usato solo il PHP quindi solo la sintassi VBA mi è nuova.
    Quando faccio le domande cerco di essere il più sintetico possibile e poi quando riesco a fare ciò che desidero ottimizzo il codice
  • Re: Restituire valore da funzione di modulo

    lucavalentino ha scritto:


    Quando faccio le domande cerco di essere il più sintetico possibile
    È sempre molto utile essere chiari in modo che l'utente che ti legge abbia un quadro completo della situazione. Non dare mai nulla per implicito. Il riquadro per scrivere testo è vastissimo, non temere di raccontare i dettagli (quelli che contano).
Devi accedere o registrarti per scrivere nel forum
6 risposte