Как я могу сделать целое число NULL в Excel VBA?
Вопрос
Я пытаюсь определить, было ли установлено целое число, и если нет, пропустите большую часть кода в цикле (используя оператор IF). Вот что у меня так для.
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
Однако, когда я бегу, ar = Null
имеет проблемы. Он говорит «Недопустимое использование NULL».
Решение
Найти возвращает диапазон:
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/aaa195730(office.11).aspx.
Другие советы
Переменные, определенные как целое число, не могут быть нулевыми в VBA. Вам придется найти другой способ сделать то, что вы хотите. Например, используйте другой тип данных или используйте волшебный номер, чтобы указать NULL (например, -1).
В вашем примере кода либо AR будет назначен длительное значение (диапазон.
Просто используйте вариант и испуганный:
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"
Не связан с StackOverflow