В конец избавиться от макроса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
WEBuser
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 06.12.2008 (Сб) 4:51

В конец избавиться от макроса

Сообщение WEBuser » 06.12.2008 (Сб) 4:56

Привет всем :)

В VB я начинающий только...
Тут изучал макрос и попытался адаптировать его код на лист excel...
Ну, чтобы в будущем обходиться без макроса вообще ;)
Вроде все логично свиду, но на практике результат макроса и листа excel дают разный результат :(
Чтобы было яснее...
У меня есть макро-функция:
Код: Выделить всё
Function Ps(T)
' T=-20

If T > 0 Then

T = 273.15 + T
A = -5800.2206
B = 1.391499
C = -0.048640239
d = 0.000041764768
e = -0.000000014452093
f = 6.545967
Ps = Exp(A / T + B + C * T + d * T * T + e * T * T * T + f *Log(T))
Else
T = 273.15 + T
G = -5674.5359
h = 6.3925247
K = -0.009677843
l = 0.000000622115701
ll = 2.0747825E-09
N = -9.484024E-13
p = 4.1635019
Ps = Exp(G / T + h + K * T + l * T * T + ll * T * T * T + N * T * T * T * T + p * Log(T))
End If

End Function
'может быть разнится по возврату значения с excel-евскими LOG() EXP()?


Попытался получить тот же эффект на листе, применив:

Код: Выделить всё
...
=exp(($B$13/G4+$B$14+$B$15*G4+$B$16*G4^2+$B$17*G4^3+$B$18*LOG(G4)))
где под абсолютными - это константы, выведенные на лист.

Не понимаю причины. Макрос дает результат: 103,26
На листе через адаптацию получается: 0
При этом на листе вот эта формула: G / T + h + K * T + l * T * T + ll * T * T * T + N * T * T * T * T + p * Log(T)
всегда получает отрицательное значение :(
Может она и должна получать отрицательное, но почему-то макрос с этим как-то справляется :(

В общем ситуация странная получается.
Можно ли вконец избавиться от этого макроса? Log() и Exp() в макросах отличаются ли функциональностью от excel-евских LOG() И EXP()? Может в этом дело?
В общем, ребята, что может выдавать разный результат?

WEBuser
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 06.12.2008 (Сб) 4:51

Re: В конец избавиться от макроса

Сообщение WEBuser » 06.12.2008 (Сб) 5:05

Очень интересно услышать мнения по этому поводу :) Как сделать так, чтобы можно было спокойно удалить этот макрос из книги xls, чтобы перейти чисто на excel?
Сам макрос содержит много функций, просто я их здесь не выложил. Это самая простенькая...Но если будет интересно, то я выложу код всего макроса. Интересно, как можно произвести адаптация функции, которая содержит 3 параметра, например. В приниципе меня не интересует именно этот макрос. Можете цитировать примерные наброски решения таких задач из других источников, своего опыта. Хочется пофантазировать на эту тему.
Интересны размышления. Жду...

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: В конец избавиться от макроса

Сообщение Zenitchik » 06.12.2008 (Сб) 10:50

А вы могли бы обычным математическим языком написать расчетную формулу?
Кстати, почему в макросе множим, а не возводим в степень?
Знание английского языка - затрудняет понимание кода

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: В конец избавиться от макроса

Сообщение pronto » 06.12.2008 (Сб) 11:53

Если в математике всё правильно, то, действительно, различия могут быть в фукции LOG(). Может пониматься и натуральный логарифм (основание e) и десятичный. В VBA log - это натуральный логарифм. Аналогично с exp(x). В VBA - это e в степени x. На листе - нужно читать help. То есть нужно ещё и ещё раз проверить всё внимательно.
Кстати, почему в макросе множим, а не возводим в степень?

Может быть и поэтому, но в общем случае разницы в результатах нет - только в быстродействии.
O, sancta simplicitas!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 77

    TopList