我恳请您对以下问题给予支持: 我在 EXCEL 中有一个 ws,其中有一列输入(例如从 L5 到 L15),在该列的最后一行 (L16) 我放置了一个可以修改的通用公式。
VBA 子例程应读取 L16 中的公式,将其转换为 VBA 表达式并在
FOR-LOOP
中使用它。
这是摘录:
! `'get the formula` ! `formulaText = ws.Range("L" & ultimaRigaQuote + 1).formula` ! `'manage the formula` ! `formulaText = Mid(formulaText, 2)` ! `formulaText = Replace(formulaText, "SUM", "Application.WorksheetFunction.Sum")` ! `formulaText = Replace(formulaText, "IF", "IIf")` ! `formulaText = Replace(formulaText, "SIN", "Application.WorksheetFunction.Sin")` ! `formulaText = Replace(formulaText, "COS", "Application.WorksheetFunction.Cos")` ! `formulaText = Replace(formulaText, "TAN", "Tan")` ! `formulaText = Replace(formulaText, "RADIANS", "Application.WorksheetFunction.Radians")` ! `formulaText = Replace(formulaText, "SQRT", "Application.WorksheetFunction.Sqr")` ! `formulaText = Replace(formulaText, "PI()", "Application.WorksheetFunction.Pi")` ! ` ! ``For i = 1 To nSimulazioni` ! `'assign the value to the input` ! `For j = 5 To ultimaRigaQuote` ! `MediaCalc(j - 5) = Z_Var(j - 5)` ! `Next j` ! `'use them in the expression` ! `risultato(i) = Evaluate(formulaText)` ! `Next i` !
一切正常,但问题出在
"Evaluate(formulaText)"
。如果我直接将字符串 "formulaText"
的内容放入括号中,则脚本可以工作,但如果我输入字符串 (formulaText)
的名称,则脚本不起作用
请问你能帮我吗?
tnx 绘玛
解决问题
evaluate function
'get the formula
formulaText = ws.Range("L" & ultimaRigaQuote + 1).formula
'manage the formula
formulaText = Mid(formulaText, 2)
formulaText = Replace(formulaText, "SUM", "Application.WorksheetFunction.Sum")
formulaText = Replace(formulaText, "IF", "IIf")
formulaText = Replace(formulaText, "SIN", "Application.WorksheetFunction.Sin")
formulaText = Replace(formulaText, "COS", "Application.WorksheetFunction.Cos")
formulaText = Replace(formulaText, "TAN", "Tan")
formulaText = Replace(formulaText, "RADIANS","Application.WorksheetFunction.Radians")
formulaText = Replace(formulaText, "SQRT", "Application.WorksheetFunction.Sqr")
formulaText = Replace(formulaText, "PI()", "Application.WorksheetFunction.Pi")
For i = 1 To nSimulazioni
'assign the value to the input
For j = 5 To ultimaRigaQuote
MediaCalc(j - 5) = Z_Var(j - 5)
Next j
'use them in the expression
risultato(i) = Evaluate(formulaText)
Next i