vba 根据字符串名称计算表达式

问题描述 投票:0回答:1

我恳请您对以下问题给予支持: 我在 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

excel vba evaluate
1个回答
0
投票
'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
© www.soinside.com 2019 - 2024. All rights reserved.