我可以创build一个variables来保存公式的结果吗?

下面是一个示例代码,其中我将范围设置为一个stringvariables,然后根据公式结果保存一个文件名。

Dim vFormula3 As String 'Set up formula into string variable vFormula3 = "=INDEX($A$7:$AZ$7,MATCH(" & Chr(34) & "Voyage Number" & Chr(34) & ",$A$6:$AZ$6,0))" 'Then Put formula into a cell range 'Set sheet range here if needed Range("A3") = vFormula3 'Save code goes here 'blah blah blah save files. 

是否可以改写公式,以便将我的variables(例如vFormula1)设置为公式的结果?

有没有一个Dim vFormula as Formula我可以采取的Dim vFormula as Formula方法?

正如您最后一个问题的评论中提到的那样,请查看Application.Evaluate方法 。 或者,更直接的方法可能是WorksheetFunction对象 。

您在公式中缺less父工作表引用; 当使用任何在VBA中评估公式的方法时,这不是一个好主意,由于ActiveSheet属性的漫游,父引用可能会丢失。

 Dim vFormula3 As String, vResult As Variant vFormula3 = "INDEX('Sheet One'!$A$7:$AZ$7, " & _ "MATCH(""Voyage Number"", 'Sheet One'!$A$6:$AZ$6, 0))" Debug.Print Application.Evaluate(vFormula3) vResult = Application.Evaluate(vFormula3) Debug.Print vResult 'HLOOKUP is a better formula for this With Worksheets("Sheet One") Debug.Print Application.HLookup("Voyage Number", .Range("A6:AZ7"), 2, False) Debug.Print WorksheetFunction.HLookup("Voyage Number", .Range("A6:AZ7"), 2, False) vResult = Application.HLookup("Voyage Number", .Range("A6:AZ7"), 2, False) Debug.Print vResult End With 

请注意,引用string中的引号需要加倍。

我已经使用HLOOKUP函数提供了一个替代公式。 它似乎更适合你想要做的事情。

Debug.Print结果进入VBE的立即窗口 (点击[Ctrl] + G显示)。