Вычисления из текстового поля в текстовое поле

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