[英]VBA How to return null from a function
我有這個功能
Public Function parseEmployee(ByVal employeeId As Integer, _
ByVal ws As Worksheet) As employee
Dim emp As New employee
Dim empRow As Range
If sheetContainsEmployee(employeeId, ws) Then
Set empRow = ws.Rows(ws.Columns(ID_COLUMN).Find(employeeId).Row)
emp.id = employeeId
emp.Name = empRow.Cells(1, NAME_COLUMN).Value
Else
emp = Null ' Heres what I'd like to do
End If
parseEmployee = emp
End Function
如果在工作表中找不到該員工,我想返回null,這可能嗎? 我得到一個未設置的對象或變量nblock。 錯誤
只有Variant
可以為Null
,而是使用Nothing
:
Public Function parseEmployee(ByVal employeeId As Integer, _
ByVal ws As Worksheet) As employee
Dim emp As New employee
Dim empRow As Range
If sheetContainsEmployee(employeeId, ws) Then
Set empRow = ws.Rows(ws.Columns(ID_COLUMN).Find(employeeId).Row)
emp.id = employeeId
emp.Name = empRow.Cells(1, NAME_COLUMN).Value
Else
Set emp = Nothing
End If
Set parseEmployee = emp
End Function
你要測試的方式:
Dim emp As employee
Set emp = parseEmployee( ... )
If emp Is Nothing Then
Debug.Print "No employee returned."
End If
我發現從函數返回Nothing會導致異常。
我所做的是寫一個帶有ByRef參數的子,它是你的返回值。
而不是這個:
Public Function test() as SomeClass
set test = Nothing
End Function
我寫了這個:
Public Sub test(ByRef result as SomeClass)
result = Nothing
End Sub
只需使用“”“”或“”,哪一個可以工作,你可以試試,如:
Else Set emp =“”“”
請注意,兩者之間沒有空格
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.