Compartilhar via


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

Uma variável de objeto inválida está sendo referenciada. Esse erro pode ocorrer por vários motivos:

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

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

    Dica

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

  • 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 With...End With bloco antes que o bloco seja inicializado. Um With...End With bloco deve ser inicializado executando o ponto de entrada da With instrução.

Observação

Em versões anteriores do Visual Basic ou do VBA, esse erro também foi disparado atribuindo um valor a uma variável sem usar a Set palavra-chave (x = "name" em vez de Set x = "name"). A Set palavra-chave 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
    

    Quando você executa 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, pesquise Option Strictqualquer variável especificada 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 que foi definida como Nothing. Pesquise a palavra-chave Nothingem seu código e revise seu código para Nothing que o objeto não seja definido até depois de você referenciá-lo.

  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 ReDim palavra-chave para definir as dimensões da matriz antes de acessá-la pela primeira vez.

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

Consulte também