Compartilhar via


Variável de objeto ou variável com bloco não definida

Uma variável de objeto inválida está sendo referenciada. Esse erro pode ocorrer por várias razões:

  • Uma variável foi declarada sem especificar um tipo. Se uma variável for declarada sem especificar um tipo, será padrão digitar Object.

    Por exemplo, uma variável declarada com Dim x seria do tipo Object; uma variável declarada com Dim x As String seria do tipo String.

    Dica

    A instrução Option Strict não permite a digitação implícita que resulta em um tipo Object. Se você omitir o tipo, ocorrerá um erro em tempo de compilação. Consulte Instrução Option Strict.

  • Você está tentando fazer referência a um objeto que foi definido como Nothing.

  • Você está tentando acessar um elemento de uma variável de matriz que não foi declarado corretamente.

    Por exemplo, uma matriz declarada como products() As String disparará o erro se você tentar fazer referência a um elemento da matriz products(3) = "Widget". A matriz não tem elementos e é tratada como um objeto.

  • Você está tentando acessar o código em um bloco With...End With antes que ele seja inicializado. Um bloco With...End With deve ser inicializado executando o ponto de entrada da instrução With.

Observação

Em versões anteriores do Visual Basic ou VBA, esse erro também foi disparado atribuindo um valor a uma variável sem usar a palavra-chave Set (x = "name" em vez de Set x = "name"). A palavra-chave Set não é mais válida no .Net do Visual Basic.

Para corrigir este erro

  1. Defina Option Strict como On adicionando o seguinte código ao início do arquivo:

    Option Strict On
    

    Ao executar o projeto, um erro do compilador aparecerá na Lista de Erros para qualquer variável especificada sem um tipo.

  2. Se você não quiser habilitar Option Strict, pesquise quaisquer variáveis no código que foram especificadas sem um tipo (Dim x em vez de Dim x As String) e adicione o tipo pretendido à declaração.

  3. Verifique se você não está se referindo a uma variável de objeto definida como Nothing. Pesquise em seu código a palavra-chave Nothing e revise o código para que o objeto não seja definido como Nothing até que você o tenha referenciado.

  4. Verifique se todas as variáveis de matriz são dimensionadas antes de acessá-las. Você pode atribuir uma dimensão ao criar pela primeira vez a matriz (Dim x(5) As String em vez de Dim x() As String), ou usar a palavra-chave ReDim para definir as dimensões da matriz antes de acessá-la pela primeira vez.

  5. Verifique se o bloco With foi inicializado executando o ponto de entrada da instrução With.

Confira também