Condividi tramite


Variabile oggetto o variabile del blocco With non impostata

Viene fatto riferimento a una variabile oggetto non valida. L'errore può essere determinato da numerose cause:

  • Una variabile è stata dichiarata senza specificare un tipo. Se una variabile viene dichiarata senza specificare un tipo, per impostazione predefinita viene digitato Object.

    Ad esempio, una variabile dichiarata con Dim x sarebbe di tipo Object; e una variabile dichiarata con Dim x As String sarebbe di tipo String.

    Suggerimento

    L'istruzione Option Strict non consente la digitazione implicita che genera un tipo Object. Se si omette il tipo, si verificherà un errore in fase di compilazione. Vedere Istruzione Option Strict.

  • Si sta tentando di fare riferimento a un oggetto impostato su Nothing.

  • Si sta tentando di accedere a un elemento di una variabile di matrice non dichiarata correttamente.

    Ad esempio, una matrice dichiarata come products() As String attiverà l'errore se si tenta di fare riferimento a un elemento della matrice products(3) = "Widget". La matrice non dispone di elementi e viene considerata come un oggetto.

  • Si sta tentando di accedere al codice all'interno di un blocco With...End With prima che il blocco sia stato inizializzato. È necessario inizializzare un blocco With...End With eseguendo il punto di ingresso dell'istruzione With.

Nota

Nelle versioni precedenti di Visual Basic o VBA, questo errore veniva attivato anche assegnando un valore a una variabile senza usare la parola chiave Set (x = "name" anziché Set x = "name"). La parola chiave Set non è più valida in Visual Basic .Net.

Per correggere l'errore

  1. Impostare Option Strict su On aggiungendo il codice seguente all'inizio del file:

    Option Strict On
    

    Quando si esegue il progetto, viene visualizzato un errore del compilatore nell'Elenco errori per qualsiasi variabile specificata senza un tipo.

  2. Se non si vuole abilitare Option Strict, cercare nel codice le variabili specificate senza un tipo (Dim x anziché Dim x As String) e aggiungere il tipo desiderato alla dichiarazione.

  3. Assicurarsi di non fare riferimento a una variabile oggetto impostata su Nothing. Cercare la parola chiave Nothing nel codice e rivedere il codice in modo che l'oggetto non sia impostato su Nothing fino a quando non vi viene fatto riferimento.

  4. Assicurarsi che tutte le variabili di matrice vengano dimensionate prima di accedervi. È possibile assegnare una dimensione quando si crea per la prima volta la matrice (Dim x(5) As String anziché Dim x() As String) oppure usare la parola chiave ReDim per impostare le dimensioni della matrice prima di accedervi.

  5. Assicurarsi che il blocco With sia inizializzato eseguendo il punto di ingresso dell'istruzione With.

Vedi anche