Как сделать целое число, чтобы обнулить в Excel VBA? - PullRequest
1 голос
/ 26 октября 2010

Я пытаюсь определить, было ли установлено целое число, и если нет, пропустить большую часть кода в цикле (используя оператор 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 возникают проблемы.Там написано "Неправильное использование нуля".

Ответы [ 3 ]

8 голосов
/ 26 октября 2010

Переменные, определенные как Integer, не могут быть пустыми в VBA. Вам нужно будет найти другой способ сделать то, что вы хотите. например, используйте другой тип данных или используйте магическое число для обозначения нуля (например, -1).

В вашем примере кода либо ar будет присвоено значение Long (Range.Row is Long), либо будет выдано сообщение об ошибке.

1 голос
/ 26 октября 2010

просто используйте вариант и 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"
0 голосов
/ 26 октября 2010

Find возвращает диапазон:

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

...