Como faço para fazer um número inteiro para null em Excel VBA?
Pergunta
Eu estou tentando detectar se um número inteiro, e se não, ignore a maioria do código no loop (usando uma instrução if).Aqui está o que eu tenho, então para.
Do While hws.Cells(r, 9).Value <> ""
On Error Resume Next
ar = Null
ar = aws.Range("A:A").Find(hws.Cells(r, 2).Value).Row
If Not IsNull(ar) Then
'work with ar'
End If
r = r + 1
Loop
No entanto, quando eu executar, ar = Null
tem problemas.Ele diz que "Inválido usar de nulo".
Solução
Encontre retornos um intervalo:
Dim rf As Range
With aws.Range("A:A")
Set rf = .Find(hws.Cells(r, 2).Value)
If Not rf Is Nothing Then
Debug.Print "Found : " & rf.Address
End If
End With
-- http://msdn.microsoft.com/en-us/library/aa195730(office.11).aspx
Outras dicas
As variáveis definidas como Integer não pode ser Nulo em VBA.Você vai ter que encontrar outra maneira de fazer o que você quer.por exemplo, usar um tipo de dados diferente ou usar um número mágico para indicar nulo (por exemplo, -1).
No código de exemplo, um ar será atribuído um valor Longo (Gama.Linha é um Longa) ou ele vai lançar um erro.
Basta usar uma variante e isempty:
Dim i
If IsEmpty(i) Then MsgBox "IsEmpty"
i = 10
If IsEmpty(i) Then
MsgBox "IsEmpty"
Else
MsgBox "not Empty"
End If
i = Empty
If IsEmpty(i) Then MsgBox "IsEmpty"
'a kind of Nullable behaviour you only can get with a variant
'do you have integer?
Dim j as Integer
j = 0
If j = 0 Then MsgBox "j is 0"