02/05/2025 - fcaliandro ha scritto:
LastSubmission è una data , posizionando il mouse su di essa leggo "Lastsubmission=1/7/2025". Non capisco perchè il codice si blocca qui...
Cosa può essere?
Ciao, ....un paio di cose di sicuro "possono essere"
Function FeedbackComment(FeedbackText As String, FeedbackDate As Date, LastSubmission As Date, PromisedDate As Date, DocumentStatus As String) As String
OPPURE
Function FeedbackComment(FeedbackText As String, FeedbackDate As Variant, LastSubmission As Variant, PromisedDate As Variant, DocumentStatus As String) As String
- L'operatore Is Null si può usare solo sugli Oggetti oppure sul tipo Variant. Se i tuoi parametri sono di tipo Date oppure vengono interpretati come tipo Date, allora Is Null come operatore non può essere utilizzato in quanto il tipo Date non è un Oggetto.
- Se i parametri passati alla function possono contenere valori = Null, allora utilizzare il tipo Variant nella dichiarazione degli stessi.
.
If IsNull(LastSubmission) Then
- Usare la funzione IsNull() e non l'operatore Is Null. (come ti hanno già suggerito)
- in tal caso questo campo data deve essere dichiarato come tipo Variant (che accetta anche valori Null) in quanto il tipo Date non prevede valori Null e riceveresti subito errore.
- Per nessuna riga di codice viene fornita una descrizione (commenti al codice)
- Non usare i commenti al codice è un errore che si paga anche nel breve periodo. Rende dificoltoso la lettura del codice, lo scopo della function e quant'altro di utile per chi ha scritto il codice o per coloro che dovranno leggerlo. E il tempo e la chiarezza è qualcosa di molto prezioso.
.
In sintesi :
- se i parametri di tipo Date passati alla function possono contenere valori Null, allora dichiarare tali parametri coil tipo Variant.
- Se i parametri vengono dichiarati di tipo Date e potrebbero contenere valori Null, allora si riceve errore in quanto i tipi Date non consentono di contenere valori Null.
- Se i parametri non vengono dichiarati con nessun tipo, allora sarà Access, sulla base dei valori in essi contenuti, a interpretarli o come Date se contengono una data, oppure come Oggetti se per esempio contengono un valore Null, oppure come String se contengono un testo, oppure di Tipo Numerico secontengono solo numeri, etc...etc...
- Nel caso in cui i parametri non sono dichiarati ovviamente i risultati sono imprevedibili... può verificarsi che in certi casi non si ricevono errori e in altri casi possono verificarsi errori bloccanti.
.
Il codice scritto per la function, non è per niente ben strutturato. I controlli non controllano. La logica e la sintassi è sbagliata. L'uso dell'operatore Is Null è errato per campi di tipo Date in quanto non sono oggetti e devono contenere un valore valido.
Domanda : tra le altre cose... usi Option Explicit ?
;-)
Insomma Francesco, senza offesa... le mie solo semplici osservazioni con lo scopo di farti capire alcune cose importanti, ma non va per niente bene come hai scritto il codice per la Function. Qui manca un pò di studio, te devi impegnà de più ;-)
Un pò di documentazione per avere rispsosta al tuo questito e altro di molto utile da approfondire:
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/function-statement
https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/variant-data-type
https://learn.microsoft.com/it-it/dotnet/visual-basic/programming-guide/program-structure/comments-in-code