#vba
Вопрос:
Может быть, простой вопрос, но мне все еще нужна помощь с разъяснением формулы:
Может ли кто-нибудь помочь мне с этим:
TempCalc = CInt(TextBox3.Value) * (16*POWER(SQRT(CInt(TextBox1.Value)*(1-CInt(Textbox1.Value)))/(CInt(TextBox1.Value)*CInt(TextBox2.Value);2))
что не так, синтаксис полностью отключен?
Заранее спасибо
Ответ №1:
Функции POWER
и SQRT
не существуют в VBA.
Power(x, y)
может быть заменен наx ^ y
sqrt
находитсяsqr
в VBA
Таким образом, должно сработать следующее:
TempCalc = CLng(TextBox3.Value) * (16 * ((Sqr(CLng(TextBox1.Value) * 1 - CLng(TextBox1.Value))) / (CLng(TextBox1.Value) * CLng(TextBox2.Value))) ^ 2)
И я рекомендую преобразовать целые числа в Long
использование CLng
, так как в использовании нет никакой пользы Integer
.
Поэтому, чтобы упростить отладку, я рекомендую разделить расчет:
Dim SqrtVal As Double
SqrtVal = Sqr(CLng(TextBox1.Value) * 1 - CLng(TextBox1.Value))
Dim DivVal As Double
DivVal = (CLng(TextBox1.Value) * CLng(TextBox2.Value))
Dim PowerVal As Double
PowerVal = (SqrtVal / DivVal) ^ 2
Dim TempCalc As Double
TempCalc = CLng(TextBox3.Value) * 16 * PowerVal
Комментарии:
1. @LasseDupont проверьте, правильно ли он вычисляет, потому что в вашей формуле были некоторые проблемы со скобками. Это может не привести к решению, которого вы ожидаете. Также проверьте мое редактирование о том, как разделить расчет, чтобы упростить его отладку и обслуживание.