Visual Basic - Variáveis : Null , Empty , Nothing e Error


Ao declarar variáveis , antes que qualquer valor seja atribuido a elas , você sabe me dizer qual o valor padrão que o VB atribui ? Não sabe ??? Então vamos lembrar...

Quer testar ? Então execute o código abaixo e vair que estou falando a verdade:

Dim a As Integer
Dim b As String
Dim c As Variant
Dim d As Object
Dim f As Date

If a = 0 Then
   MsgBox " variável a = 0"
End If
If b = "" Then
   MsgBox " variável b = """
End If
If IsEmpty(c) Then
   MsgBox " variável c = Empty"
End If
If d Is Nothing Then
   MsgBox " variável d = Nothing "
End If
If IsDate(f) Then
   MsgBox " variável f = 00:00:00 "
End If

Então agora eu quero falar sobre alguns valores especiais que as variáveis podem possuir. São eles : Empty , Null , Nothing e Error. Vamos por partes...

1- Empty

Quando você declara um variável do tipo Variant mas não atribui valor ela , seu valor será Empty , que quer dizer vazia. Empty NÃO é igual a uma string de tamanho zero , ou seja , não é igual a "" . Para saber se uma variável foi inicializada use a função IsEmpty(variavel).

A sintaxe é : IsEmpty(variavel)

Retorno :

Ao atribuir um valor para a variável ela deixa de ser Empty. Você pode também iniciar uma variável como Empty , assim : var = Empty

2- Null

Null (nulo) pode causar um pouco de confusão. O valor Null é diferente do valor Empty e é diferente de uma string de tamanho zero "". O valor Null é usado em aplicativos para banco de dados e indica que um campo(coluna) NÃO CONTÉM DADOS (DADO INVÁLIDO). Então , variáveis não inicializadas que se referem a banco de dados recebem o valor Null(nulo).

A sintaxe é : IsNull(variavel)

Retorno :

Você pode atribuir a uma variável o valor Null. Ex: var = Null

Para saber se uma variável objeto possui o valor Null usamos a função : IsNull(variável)

Cuidado : Tome cuidado com expressões de avaliação usando Null

Sabe por que ? Porque qualque expressão contendo um valor Null é Null e portanto será False.

3- Nothing

O valor Nothing indica que uma variável objeto não foi inicializada. Geralmento usamos Nothing para desassociar uma variável objeto de um objeto através da instrução Set.

Ex: Set VariavelObjeto = Nothing

Tome cuidado , pois você pode ter mais de uma variável objeto referenciando o objeto atual , e , ao atribuir Nothing para a variável objeto , esta variável não se referirá mais ao objeto atual. Mas os recursos do sistema e da memória associados com o objeto somente serão liberados somente quando TODOS as variáveis forem definidas como Nothing ou quando elas sairem do escopo.

Para verificar se uma variável possui o valor Nothing usamos o operador Is Nothing

Sintaxe : resultado = object1 Is Nothing

Vejamos um exemplo abaixo para esclarecer :

Private Sub Command1_Click()

Set VariavelObjeto = CreateObject("Word.Application")

Debug.Print VariavelObjeto.Name

If Not (VariavelObjeto Is Nothing) Then
   Set VariavelObjeto = Nothing
   If (VariavelObjeto Is Nothing) Then
        MsgBox " VariavelObjeto = Nothing "
   End If
End If
End Sub
1- Definimos uma variável objeto como sendo do tipo - Microsoft Word
2- Imprimimos o nome da variavel
3- Se a variável Não for Nothing então atribuimos Nothing a ela
4- Se a variável for Nothing exibimos mensagem indicando isto.
A saida será : 
  1. Microsoft Word
  2. " VariavelObjeto = Nothing 

4- Error

O valor Error é um valor especial que você pode usar quando escrever funções que retornam erros . Se ocorrer um erro durante a execução da função você pode retornar um valor Error e trata o erro não na função mas no programa que fez a chamada a função.

Para converter um valor em um objeto Erro usamos a função - CVerr()

Sintaxe : CVErr(numero do erro)

Vejamos um exemplo :

Function Calculo(Numero)
If IsNumeric(Numero) Then
   CalculateDouble = Numero * 2 
Else
   If Error Then
     Calculo = CVErr(2001) 'Retorna um erro 
   End If
End If
End Function
Se ocorrer um erro na função usamos o valor Error para retornar

o objeto erro atravé da função CVErr().

No programa que fez a chamada iremos fazer o tratamento

do erro ocorrido pelo número informado.

Acabou...