【问题标题】:Assigning the value of a formula to a variable将公式的值分配给变量
【发布时间】:2013-05-29 09:07:08
【问题描述】:

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

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

我确实试过这个:

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

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

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

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

【问题讨论】:

  • 你的配方是从哪里来的?能举个例子吗?
  • 您还可以在问题中显示更多代码以便更好地理解...

标签: vba variables variable-assignment formula


【解决方案1】:

有一个选项可能会让您感兴趣。您可以调用SUM 工作表函数,通过WorksheetFunction 对象从VBA 调用它。它是如何工作的?

根据您的示例,您可以通过这种方式获得 R1C1R3C2(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 的方法和属性。

最后,请参阅this link 了解有关使用WorksheetFunction 的更多信息。

编辑还有一件事,这可能很明显,但要清楚。要将 A1 到 B3 的连续范围相加,您只需进行少量更改:

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

【讨论】:

    猜你喜欢
    • 2018-01-24
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多