Как завершить VBA Sub изнутри вызываемой функции - PullRequest
0 голосов
/ 09 июля 2019

Как получить сабвуфер VBA для выхода из вызываемой функции в случае ошибки?

Я пытался поместить операторы Exit Sub в соответствующие функции, но всякий раз, когда я сохраняю и заново открываю файл, VBA автоматически изменяет его на Exit Function.

Например, как мне получить код ниже

Sub foo()
    userNum = userNum()

    MsgBox(var)
End Sub

Function userNum() As Integer
    userNum = InputBox("Enter your positive number")

    If var < 0 Then
        MsgBox("Invalid: your number must be positive.")
        Exit Sub
    End If
End Function

не выполнить MsgBox(var)?

1 Ответ

1 голос
/ 09 июля 2019
  1. Объявление переменных.
  2. Я бы рекомендовал использовать Application.InputBox с Type:=1 для приема чисел в качестве ввода.
  3. Объявить результат как Variant, чтобы вы могли обрабатыватькнопка Cancel в InputBox.Также используйте это, чтобы решить, хотите ли вы показать номер или нет.

Это то, что вы связываете?( Не проверено )

Option Explicit

Sub foo()
    Dim numb As Variant
    numb = userNum()

    If numb <> False Then MsgBox numb
End Sub

Function userNum() As Variant
    Dim Ret As Variant

    Ret = Application.InputBox(Prompt:="Enter you number", Type:=1)

    If Ret = False Then
        userNum = False
        Exit Function
    ElseIf Ret < 0 Then
        MsgBox ("Invalid: your number must be positive.")
        userNum = False
        Exit Function
    End If

    userNum = Ret
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...