将公式的值分配给变量

时间:2013-05-29 09:07:08

标签: vba variables variable-assignment formula

我正在学习vba中的编码,最近我遇到了一个严重的问题:我不能将公式的值赋给变量而不先将变量放到单元格中。

我的观点是,我需要这些值来完成其他任务,但我不想将这些公式放到单元格中(如果我这样做,则需要更多编码)。

我试过这个:

Dim Total As Integer
Total = FormulaR1C1 = "=sum(R1C1,R3C2)"

但是我意识到这只会返回bolean值,这显然不是我的注意力

所以我的主要问题是:如何将公式的值(字符串或整数类型)赋给变量

此外,由于使用FormulaR1C1需要参考单元格,在分配之前是否需要选择单元格以使其正常工作

1 个答案:

答案 0 :(得分:1)

有一个选项对您来说很有意思。您可以通过SUM对象调用WorksheetFunction工作表函数从VBA调用它。它是如何工作的?

根据您的示例,您可以得到R1C1&的总和。 R3C2(A1& B3)这样:

Dim Total As Integer
Total = WorksheetFunction.Sum(Range("A1,B3"))

正如您所看到的,需要使用引用您需要总结的单元格的Range object。您不能在此处使用R1C1引用。但我认为这不是问题。

还有一个提示。它也可以这样调用它:

Dim Total As Integer
Total = Application.Sum(Range("A1,B3"))

以上两个例子的最大区别在于错误处理方式。使用WorksheetFunction - 任何错误都将停止您的程序,使用Application - 错误将作为没有程序制动的文本抛出。

另一个提示 - 如果你写WorksheetFunction.(最后点是必不可少的),你将获得大约200个可供你使用的功能列表。如果您从Application.开始,则不会有函数列表,只会列出Application Object的方法和属性。

最后,有关使用WorksheetFunction的详细信息,请参阅this link

编辑还有一件事,这可能是显而易见的,但要说清楚。要将A1到B3的连续范围相加,您只需要进行小的改动:

Dim Total As Integer
Total = WorksheetFunction.Sum(Range("A1:B3"))