Я новичок и в Stack Overflow, и в VBA и надеюсь, что не повторю ранее заданный вопрос.
Проблема в том, что мне нужна функция в VBA, которая отправляет обратно 1, еслиусловие выполнено и ноль, если это не так, и я не могу заставить это работать с кодом ниже.
Sub Calculate(Total, X, Y, Z) 'doesn't work as expected
valid_vlaue = CInt(Validity(Total, X, Y, Z))
MsgBox valid_value
If valid_value = 1 Then
MsgBox "Yes, Proceed"
ElseIf valid_value = 0 Then
MsgBox "No, abort"
End If
End Sub
Function Validity(Total, X, Y, Z) As Integer
available_space = X * Y * Z
Total = CInt(Total)
available_space = CInt(available_space)
'My_check = VarType(Total)
'MsgBox My_check
If Total <= available_space Then
MsgBox "There is Room"
Validity = 1
Check = VarType(Validity)
MsgBox Check
Exit Function
ElseIf Total > available_space Then
MsgBox "There is not enough Room"
Validity = 0
Exit Function
End If
End Function
Это не работает, как ожидалось, и ничего не возвращается и ложное утверждениевсегда выполняется.
Однако, когда я написал тестовую функцию, как видно ниже, все работает, как ожидалось.
Sub Test1() 'Works as expected
Check = Test22(1)
MsgBox Check
If Check = 1 Then
MsgBox "Proceed"
ElseIf Check <> 1 Then
MsgBox "Abort"
End If
End Sub
Function Test22(tmp) As Integer
If tmp = 1 Then
Test22 = 1
Exit Function
ElseIf tmp <> 1 Then
Test22 = 0
Exit Function
End If
End Function
Может кто-нибудь объяснить мне, что я делаю неправильно.
Заранее спасибо