Controllo per stringa nulla riporta messaggio errore

di il
7 risposte

Controllo per stringa nulla riporta messaggio errore

Ciao a tutti.

Non capisco il perchè di un messaggio di errore che ricevo

In una form ho una casella di testo non associata, in cui dovrei inserire un valore numerico e poi lanciare una automazione word.

Prima di lanciare l'automazione, voglio verificare di aver effettivamente inserito il valore nella textbox, e quindi effettuo un controllo del tipo:

If Len(Forms!frmFDV!txtProtSap01.Value & vbNullString) = 0 Then
     MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
     Exit Sub
End If

Ma continuo ad ottenere il messaggio di errore:

"Variabile oggetto o variabile del blocco With non impostata"

Ma non esiste alcun blocco with. il controllo lo faccio tramite un pulsante dove l'unico codice attualmente presente è quello riportato.

Andrea

7 Risposte

  • Re: Controllo per stringa nulla riporta messaggio errore

    Dim strX As String
    strX = Forms!frmFDV!txtProtSap01.Value
    If Len(strX & vbNullString) = 0 Then
         MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
         Exit Sub
    End If

    Prova così. 

    Mia ipotesi di spiegazione (non sono sicuro): in partenza Forms!frmFDV!txtProtSap01.Value non è dato specificare di che tipo è, quindi potrebbe cozzare con & vbNullString.

  • Re: Controllo per stringa nulla riporta messaggio errore

    25/02/2025 - OsvaldoLaviosa ha scritto:

    Dim strX As String
    strX = Forms!frmFDV!txtProtSap01.Value
    If Len(strX & vbNullString) = 0 Then
         MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
         Exit Sub
    End If

    Prova così. 

    Mia ipotesi di spiegazione (non sono sicuro): in partenza Forms!frmFDV!txtProtSap01.Value non è dato specificare di che tipo è, quindi potrebbe cozzare con & vbNullString.

    Osvaldo quello che hai proposto è errato...!

    Se il contenuto del controllo [txtProtSap01] fosse NULLO come puoi assegnarlo ad una stringa...?

    Se lo provi funziona solo perchè il contenuto del controllo è NullString e non Null, cosa che molti confondono.

    Quindi la tua soluzione, all'apparenza funzionale, è concettualmente errata.

  • Re: Controllo per stringa nulla riporta messaggio errore

    25/02/2025 - Jocman ha scritto:

    Ciao a tutti.

    Non capisco il perchè di un messaggio di errore che ricevo

    In una form ho una casella di testo non associata, in cui dovrei inserire un valore numerico e poi lanciare una automazione word.

    Prima di lanciare l'automazione, voglio verificare di aver effettivamente inserito il valore nella textbox, e quindi effettuo un controllo del tipo:

    If Len(Forms!frmFDV!txtProtSap01.Value & vbNullString) = 0 Then
         MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
         Exit Sub
    End If

    Ma continuo ad ottenere il messaggio di errore:

    "Variabile oggetto o variabile del blocco With non impostata"

    Ma non esiste alcun blocco with. il controllo lo faccio tramite un pulsante dove l'unico codice attualmente presente è quello riportato.

    Andrea

    La Form [frmFDV] è una Form esterna o è quella nel quale gira il codice...?

    Il codice, che è parziale, puoi riportarlo per intero...? L'errore di cui sopra non è indicativo di quel codice, quanto più di una mancata chiusura di Loop o Salto Condizionato...

  • Re: Controllo per stringa nulla riporta messaggio errore

    25/02/2025 - Jocman ha scritto:

    "Variabile oggetto o variabile del blocco With non impostata"

    Ciao, il messaggio porta direttamente alle osservazioni fatte da @Alex, quindi previo tale verifica, potresti correggere la tua If per esempio in questo mdo:

    If Len(Nz(Forms!frmFDV!txtProtSap01.Value, "")) = 0 Then
        MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
        Exit Sub
    End If
    

    Dove con Nz si evita di ricevere errori di tipo Null  e restituisce una stringa vuota. Quindi a questo punto puoi valutare la Value della TextBox

    Per il resto vale quanto riportato da @Alex e quindi evito di ripeterlo.

  • Re: Controllo per stringa nulla riporta messaggio errore

    25/02/2025 - @Alex ha scritto:

    La Form [frmFDV] è una Form esterna o è quella nel quale gira il codice...?

    Il codice, che è parziale, puoi riportarlo per intero...? L'errore di cui sopra non è indicativo di quel codice, qunato più di una mancata chiusura di Loop o Salto Condizionato...

    La form è quella in cui gira il codice.

    Il codice non è parziale, è l'unico codice associato al pulsante, almeno per ora.

    Fisicamente, l'automazione word che dovrei lanciare dopo quel controllo (che risiederà in una funzione separata, quindi il resto del codice sarà solo un "Call nomefunzione") non esiste neanche, così come non esiste ancora neanche il documento word di riferimento.

    Comunque è questo:

    Private Sub cmdStampaModuloSap_Click()
      
    If Len(Forms!frmFDV!txtProtSap01.Value & vbNullString) = 0 Then
         MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
         Exit Sub
    End If
    
    End Sub

    PS: il fatto di usare la sintassi Forms!frmFDV è solo perchè  spesso mi ritrovo a dover spostare gruppi di comandi magari in un modulo, perchè mi risulta successivamente più utile creare una funzione, e quindi mi ritrovo i riferimenti già pronti

  • Re: Controllo per stringa nulla riporta messaggio errore

    Pignoleria:

    Exit Sub non serve a nulla e come tutte le cose che non servono si toglie, se servirà lo metterai.

    Per scrupolo ho provato in entrambi i modi, anche se ero certo non poteva essere:

    If Len(Me!txtProtSap01.Value & vbNullString) = 0 Then
    	MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
    	'Exit Sub
    End If
        
    If Len(Forms!frmFDV!txtProtSap01.Value & vbNullString) = 0 Then
    	MsgBox "Attenzione, inserire protocollo", vbOKOnly + vbInformation, "Protocollo SAP"
    	'Exit Sub
    End If

    Funziona e non da alcun errore, come ho anticipato non può dipendere da questo codice se il Nome degli elementi è scritto correttamente.

  • Re: Controllo per stringa nulla riporta messaggio errore

    Non venendone fuori, ho provato a creare una maschera vuota, mettere la casella di testo, un pulsante (utilizzando gli stessi nomi per i controlli) quindi sia a riscrivere il codice associato al pulsante, sia copia/incolla con quello "non funzionante" presente nell'altra maschera.

    E funzionava tutto a dovere.

    Alla fine, ho deciso di eliminare casella di testo e pulsante dalla maschera e ho rifatto tutto da zero.

    Ha iniziato a funzionare.

    Francamente non so; ho controllato più volte la corrispondenza dei nomi e tutte le cose che potevo aver sbagliato, li ho riscritti più volte.

    Ha funzionato solo eliminando del tutto i controlli e rifacendoli daccapo.... Magari è possibile che senza accorgermene abbia impostato qualche cosa nelle proprietà del controllo che quindi mi causava quell'errore....

    In ogni caso ringrazio tutti per il tempo che mi avete dedicato

    Andrea

Devi accedere o registrarti per scrivere nel forum
7 risposte