Partilhar via


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

Uma variável de objeto inválida está sendo referenciada. Este 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, o padrão será 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.

    Sugestão

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

  • 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 declarada corretamente.

    Por exemplo, uma matriz declarada como products() As String acionará 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 dentro de um With...End With bloco antes que o bloco tenha sido 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 VBA, esse erro também foi acionado pela atribuição de 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 Visual Basic .Net.

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 que foi especificada sem um tipo.

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

  3. Certifique-se de que não está a referir-se a uma variável de objeto que tenha sido definida como Nothing. Pesquise o código para a palavra-chave Nothinge revise o código para que o objeto não seja definido até Nothing que você o tenha referenciado.

  4. Certifique-se de que todas as variáveis de matriz estão dimensionadas antes de acessá-las. Você pode atribuir uma dimensão ao criar a matriz pela primeira vez (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.

Ver também