У меня есть неисправность моей собственной функции Excel-VBA, и я не знаю почему. Я хочу применить один полином или другой (коэффициенты которого вычисляются на одном листе в зависимости от некоторых правил) в зависимости от значения входного параметра функции CONVERTemf (E):Неисправность собственной функции Excel-VBA при открытии другого excel-файла
В листе excel у меня есть ячейки named: «coef0_1», «coef1_1», «coef2_1», «Emin_1», «Emax_1» [для первого многочлена]; «coef0_2», «coef1_2», «coef2_2», «Emin_2», «Emax_2» [для второго].
Если «E» находится между «Emin_1» и «Emax_1», то функция CONVERTemf (E) применит первый многочлен, если «E» находится между «Emin_2» и «Emax_2», он должен применить второй.
Я запрограммировал что-то вроде этого, и он функционирует нормально, НО, когда я открываю другой файл excel (даже пустой!), Значения, которые были ранее рассчитаны, теряют результат и появляются «# ¡VALOR!».
спасибо!
Function CONVERTemf(E as Variant)
c0_1 = Range("coef0_1").Value
c1_1 = Range("coef1_1").Value
c2_1 = Range("coef2_1").Value
c0_2 = Range("coef0_2").Value
c1_2 = Range("coef1_2").Value
c2_2 = Range("coef2_2").Value
Emfmin_1 = Range("Emin_1").Value
Emfmax_1 = Range("Emax_1").Value
Emfmin_2 = Range("Emin_2").Value
Emfmax_2 = Range("Emax_2").Value
Select Case E
Case Emfmin_1 To Emfmax_1
CONVERTemf = (c2_1 * E^2) + (c1_1 * E) + (c0_1)
Case Emfmin_2 To Emfmax_2
CONVERTemf = (c2_2 * E^2) + (c1_2 * E) + (c0_2)
End Select
End Function
Вам нужно либо: 1. Перевал эти диапазоны в качестве аргументов функции непосредственно; или 2. Квалифицируйте диапазоны с помощью объекта рабочей таблицы. # 1 лучше, на мой взгляд. – Rory
Спасибо Рори. # 1 не представляется возможным (это возобновленная версия, но оригинал имеет более 30 диапазонов). Извините, но я не понимаю # 2. – Shivoham