Функция, возвращающая логическое значение? - PullRequest
10 голосов
/ 07 июня 2011

У меня есть простая функция в VBA, и мне нужно проверить, была ли она успешно выполнена. Я не очень много знаю VBA, поэтому понятия не имею, возможно ли это. Я хочу сделать что-то вроде этого: bool X=MyFunction().

Я использую VBA в описательном программировании QTP . Это не работает:

Function A as Boolean
   A=true
End Function

Там написано: Expected statement

Но я не вижу никакого типа возврата в моем методе и т. Д.

Ответы [ 5 ]

21 голосов
/ 07 июня 2011
function MyFunction() as Boolean
    .....
    .....
    MyFunction = True 'worked
end function

dim a as boolean = MyFunction()
8 голосов
/ 07 июня 2011

В VBA вы устанавливаете возвращаемое значение функции, присваивая переменную с тем же именем, что и у функции:

Function MyFunc() as Boolean
    MyFunc = True
End Function
4 голосов
/ 07 июня 2011

Я подозреваю, что вы используете VBScript вместо VBA? Если это так, то VBScript не указывает тип

это будет работать в VBScript

dim test,b
test = 1
b=false
msgbox ("Calling proc before function test=" & test)
msgbox("Calling proc before function b=" & b)
b = A(test)
msgbox ("Calling proc after function test=" & test)
msgbox("Calling proc after function b=" & b)

Function A(test)
test = test +1  
A=true
End Function

или в вашем примере

Function A()    
A=true
End Function
1 голос
/ 07 июня 2011

Нет реального способа проверить, работает ли функция в VBA.Вы должны решить для себя, была ли ваша функция успешной.Например:

Function AFunction() as Boolean
    on error goto 1
    MyFunc = True
    AFunction = True
    Exit Function
    1
    AFunction = False
End Function

Приведенное выше сообщение даст вам знать, если функция не работает.Если произойдет сбой, он перейдет к метке '1', а затем вернет false, в противном случае он вернет true.

Если это не «ошибка», которую вы ищете, то вы должны решить, если данныевозвращается или поставляется правильно.Один из способов сделать это - вернуть определенное значение [код ошибки], которое представляет собой ошибку.

0 голосов
/ 07 июня 2011

Что ж, если у вас есть доступ к объявлению функции, вы можете установить для него тип возврата bool и возвращать true или false в зависимости от выполнения. Как только ваша функция вернет bool, ваш код будет работать.

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