我正在学习vba中的编码,最近我遇到了一个严重的问题:我不能将公式的值赋给变量而不先将变量放到单元格中。
我的观点是,我需要这些值来完成其他任务,但我不想将这些公式放到单元格中(如果我这样做,则需要更多编码)。
我试过这个:
Dim Total As Integer
Total = FormulaR1C1 = "=sum(R1C1,R3C2)"
但是我意识到这只会返回bolean值,这显然不是我的注意力
所以我的主要问题是:如何将公式的值(字符串或整数类型)赋给变量
此外,由于使用FormulaR1C1需要参考单元格,在分配之前是否需要选择单元格以使其正常工作
答案 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"))