Мой код в VBA дает только 0 в результате, несмотря на многочисленные изменения значения - PullRequest
0 голосов
/ 03 апреля 2019

Я написал код в Excel VBA, но он дает результат только как 0.

Function NDAB(value, average) As Integer
    Dim Val As Integer
    Val = average - value
    If Val > 0 Then
        NDAB = Val / average
    Else
        NDAB = 0
    End If
End Function

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Не зная точно, что вы можете хранить в числовом и среднем значении, вы не определили их как целые, двойные или длинные

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

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

Sub test()
Dim value As Integer
Dim average As Integer
Dim NDAB As Integer

value = 2
average = 5

    Dim Val As Integer
    Val = average - value
    If Val > 0 Then
        NDAB = Val / average
    Else
        NDAB = 0
    End If

    MsgBox NDAB 
End Sub

результат в 1 так что для меня код в порядке, ввод просто приводит к 0.

0 голосов
/ 03 апреля 2019

Я попробую ниже и выглядит отлично работает:

Option Explicit

Function NDAB(ByVal value As Double, ByVal average As Double)

    Dim Val As Double

    Val = average - value

    If Val > 0 Then
        NDAB = Val / average
    Else
        NDAB = 0
    End If

End Function

Функция вызова из под-теста:

Sub test()

    Call Module1.NDAB(2.5, 10.5)

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