2

我正在学习 vba 编码,最近遇到了一个严重的问题:如果不先将变量放入单元格,我无法将公式的值分配给变量。

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

我确实试过这个:

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

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

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

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

4

1 回答 1

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-error 将作为没有程序制动的文本抛出。

另一个提示——如果你写WorksheetFunction.(最后的点是必不可少的),你会得到大约 200 个可用函数的列表。如果您从 开始,Application.则不会有函数列表,而只有Application Object.

最后,请参阅此链接以获取有关使用WorksheetFunction.

编辑还有一件事,这可能很明显,但要清楚。要总结从 A1 到 B3 的连续范围,您只需要很小的变化:

Dim Total As Integer
Total = WorksheetFunction.Sum(Range("A1:B3"))
于 2013-05-29T13:27:02.457 回答