2016-07-06 2 views
3

Следующий код генерирует Object Required (Error 424) в операторе if по сравнению с Nothing независимо от заданного значения. Зачем?Почему «If Value is Nothing» throw «Object Required (Ошибка 424)»

Public Function SqlizeCellValue(ByVal Value As Variant) As Variant 
    If Value Is Nothing Then 
     SqlizeCellValue = Nothing 
    ElseIf Value = Null Then 
     SqlizeCellValue = Null 
    ElseIf Value = "" Then 
     SqlizeCellValue = Null 
    ElseIf Value = "0" Then 
     SqlizeCellValue = Null 
    ElseIf Value = "---" Then 
     SqlizeCellValue = Null 
    ElseIf LCase(Value) = "n.c." Then 
     SqlizeCellValue = Null 
    Else 
     SqlizeCellValue = Value 
    End If 
End Function 
Public Sub TestSqlizeCellValue() 
    Debug.Assert SqlizeCellValue("") Is Null 
    Debug.Assert SqlizeCellValue("0") Is Null 
    Debug.Assert SqlizeCellValue("---") Is Null 
    Debug.Assert SqlizeCellValue(Nothing) Is Nothing 
    Debug.Assert SqlizeCellValue(Null) Is Null 
End Sub 
+1

Поскольку 'value' является' Variant' и только 'Object' может быть установлен в' Nothing'. – Dave

+1

Спасибо @Dave. Не могли бы вы предоставить это как ответ, пожалуйста, чтобы я мог отметить это как принято/правильно? –

ответ

2

Поскольку Value в определении функции установлено значение типа Variant и только Object может быть Set к Nothing

+0

Я не думаю, что это правда. 'Variant' может быть установлен на все, включая объекты и ноты, но оператор' is' выдает ошибку типа, когда это не объект или 'Nothing'. – m93a

 Смежные вопросы

  • Нет связанных вопросов^_^