Я хочу иметь функцию, в которую я могу вставить 2 целых числа, и в результате она вернет мне одно целое число

Sub test()
Dim x As Integer
x = getConst 1, 0 ' here is where i get the error message
MsgBox "Vakue" & x
End Sub

Function getConst(ry As Integer, rx As Integer) As Integer
getConst = 3 'actually that one: getConst = 34 * ry * ry - 30 * ry + 8.5 * rx * rx + 7.5 * rx, but that should make any difference
End Function

Я привык к кодированию на Java, и это должно работать примерно так, но там написано "Erwartet: Anweisungsende", поэтому на английском языке ~ "Expectet end of clause"

0
ShadowPenguin 6 Янв 2016 в 13:44

2 ответа

Лучший ответ

Для получения значения из функций требуются круглые скобки

x = getConst(1, 0)

Но когда вы вызываете их как процедуру (без получения возвращаемого значения), вы можете забыть о параэнтезе:

getConst 1, 0
0
Patrick Honorez 6 Янв 2016 в 10:52

Единственная проблема, с которой вы столкнулись, - это отсутствие скобок вокруг вызова функции в Sub Test() ... т.е.

x = getConst(1, 0)

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

Sub test()
Dim x As Integer

    x = getConst(1, 0)
    MsgBox "Value " & x

End Sub

Function getConst(ry As Integer, rx As Integer) As Integer
' getConst = 3 'actually that one:
' getConst = 34 * ry * ry - 30 * ry + 8.5 * rx * rx + 7.5 * rx 
' but that should make any difference

    getConst = 34 * ry ^ 2 - 30 * ry + 8.5 * rx ^ 2 + 7.5 * rx

End Function
0
MikeD 6 Янв 2016 в 10:53