Не зная точно, что вы можете хранить в числовом и среднем значении, вы не определили их как целые, двойные или длинные
также, если ваше значение больше среднего, ваше значение будет отрицательным.
если вы переписываете свой код как подпрограмму и запускаете его, используя 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.