VBAを使い始めて、エラーが発生したときに関数から戻りたいと思っています。そうすることができません。ポインタはありますか?
Function GetEditboxValue(control As IRibbonControl, text As String) As String
If Not IsMissing(text) Then
If Not IsNumeric(text) Then
MsgBox "Please enter numeric value only."
' I WANT TO RETURN HERE
End If
End If
If control.id = "xyz" Then
spaceAboveTable = text
End If
End Function
さらに実行しないようにするには、そこにEXIT FUNCTION
を配置する必要があります。
Function GetEditboxValue(control As IRibbonControl, text As String) As String
If Not IsMissing(text) Then
If Not IsNumeric(text) Then
MsgBox "Please enter numeric value only."
EXIT FUNCTION
End If
End If
If control.id = "xyz" Then
spaceAboveTable = text
End If
End Function
一般的な意味で(私は実際にはまだ言われていないことは何も言っていません):
Function Foo(inputVar As Double) As Double
On Error GoTo ErrorHandler
' Code assigning something to returnValue and defaultOutput
Foo = returnValue
Exit Function
ErrorHandler:
Foo = defaultOutput
End Function
もちろん、ダブルでなければならない理由はありません。
(「End Function」の代わりに2番目の「Exit Function」があったため、編集されました。)
MsgBox
ステートメントの後にExit Function
を使用できます
別のオプションは、Err.Raise
を使用して明示的にエラーを発生させることです。この関数内にエラーハンドラーがない(つまり、On Error ...
行がない)ため、エラーは、エラーハンドラーが実行されるまで、コールスタックを通じて伝播されます。