Нахождение объема танка в VBA с учетом радиуса, высоты и глубины - PullRequest
3 голосов
/ 21 июня 2019

У меня проблемы с поиском объема бака для курса Excel VBA; Я должен сделать функцию VBA, в которую я ввожу радиус, высоту и глубину резервуара и получаю объем. Вот картинка для лучшего понимания:

The tank function instructions

Это код, который у меня есть на данный момент, и курс говорит мне, что он неверен:

    Option Explicit

Function tank(R As Double, d As Double, H As Double) As Double

Dim pi As Double

pi = Application.WorksheetFunction.pi()

If d <= R Then

tank = pi * d ^ 2 / 3 * (3 * R - d)

ElseIf R < d And d <= H - R Then

tank = 2 / 3 * pi * R ^ 3 + pi * R ^ 2 * (d - R)

ElseIf H - R < d And d <= H Then

tank = 4 / 3 * pi * R ^ 3 + pi * R ^ 2 * (H - 2 * R) - pi * (H - d) ^ 2 / 3 * (3 * R - H + d)

End If

End Function

Может ли кто-нибудь помочь мне с этой проблемой? (Я использую макрос, предоставленный моим преподавателем курса, который не говорит мне, что не так, но если это неправильно или правильно.)

1 Ответ

5 голосов
/ 21 июня 2019

Как ответил dwirony в комментариях, моим заданием был танк (R, H, d), а моей функцией был танк (R, d, H), который изменил результат. Спасибо всем, кто помог, функция теперь работает. Вот рабочий код:

Option Explicit

Function tank(R As Double, H As Double, d As Double) As Double

Dim pi As Double

pi = Application.WorksheetFunction.pi()

If d <= R Then

tank = pi * d ^ 2 / 3 * (3 * R - d)

ElseIf R < d And d <= H - R Then

tank = 2 / 3 * pi * R ^ 3 + pi * R ^ 2 * (d - R)

ElseIf H - R < d And d <= H Then

tank = 4 / 3 * pi * R ^ 3 + pi * R ^ 2 * (H - 2 * R) - pi * (H - d) ^ 2 / 3 * (3 * R - H + d)

End If

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