【问题标题】:Is there a way to use VBA for Excel to output a formula to a specific cell in an Excel worksheet?有没有办法使用 VBA for Excel 将公式输出到 Excel 工作表中的特定单元格?
【发布时间】:2017-07-25 10:27:58
【问题描述】:

我是编程新手。我觉得这应该是一个简单的修复,但我找不到任何有效的方法。我正在尝试使用Select Case 结构根据所选情况向单元格写入不同的公式。如果我输入:

Sheet1.Range("g10").Value = "=IF(SUM(F10)>0,SUM((F10-15)),"")" 

我收到一个错误:

运行时错误“1004”
应用程序定义或对象定义的错误。

如果我包含这样的空格,我可以让它工作:

Sheet1.Range("g10").Value = " =IF(SUM(F10)>0,SUM((F10-15)),"") "

然后 Excel 将其像文本一样放入单元格,而不是作为公式(它不任何事情)。

我尝试了几种不同的方法,但都遇到了同样的问题。可以这样做吗?

如果有人提出并回答了这个问题,我深表歉意,但我找不到任何人提及这个特定问题。

【问题讨论】:

标签: vba excel


【解决方案1】:

您不需要对单个单元格求和,即SUM(F10) 此外SUM((F10-15))F10-15 相同。

试试这个:Sheet1.Range("g10").Formula = "=IF(F10>0,F10-15,"""")" 另请注意,您需要将双引号加倍。

注意,您也可以像这样在范围上执行此操作:

Sheet1.Range("g10:g20").Formula = "=IF(F10>0,F10-15,"""")" 它足够聪明,可以为您增加 10 个单元格的引用。

【讨论】:

    【解决方案2】:

    错误的属性。你需要 .formula 而不是 .value

    worksheets("sheet1").range("g10").formula = "=IF(SUM(F10)>0,SUM((F10-15)),"")"
    

    【讨论】:

    • 您仍然需要修复双引号 - 目前代码将生成 =IF(SUM(F10)>0,SUM((F10-15)),") 的公式,这不是有效的 Excel 公式。
    【解决方案3】:

    您应该能够输入公式,然后打开宏记录器并双击带有论坛的单元格,然后关闭宏记录器并检查您的代码。那应该给你你想要的。

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 2017-04-18
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多