【问题标题】:How to insert, through VBA, a formula in a cell with special characters like "-" or "$"?如何通过 VBA 在带有“-”或“$”等特殊字符的单元格中插入公式?
【发布时间】:2019-12-17 01:37:01
【问题描述】:

我在互联网上搜索,没有任何帮助... 我只是希望能够让我的 VBA 代码在单元格中编写此公式:

=IF(C4="-"; "-"; Cars!C4*C4*Data!$C$8)

如您所料,有一个名为“汽车”的页面和一个名为“数据”的页面,我在其中选择所需的信息。

当然,因为它是 VBA 代码,所以 C4 将是 2 个变量,一个用于 C,一个用于 4 将进化... 实际上,我试过这个:

Worksheets("Calculation").Range(Column & PosStartCalc + 1).Formula = "=" & "IF(" & Column & PosStartCalc & " = " & "" - "" & ";" & " - " & ";" & "Cars!" & Column & PosStart & "*" & Column & PosStartCalc & "*" & "Data!" & "C" & "8" & ")"

(变量Column包含列字母,变量PosStartCalc包含行号)

这伤害了我的眼睛,显然也伤害了 VBA 的眼睛,因为它给出了错误“运行时错误'13':类型不匹配' 谁能告诉我该怎么做?

提前致谢!

【问题讨论】:

  • 你并不总是使用PosStartCalc,你使用PosStart。这是故意的吗?为避免变量中的拼写错误,请以:Option Explicit 开头

标签: excel vba cell formula


【解决方案1】:

假设 column 变量是字符串,row 变量是 long 变量,请尝试以下操作。我可能没有正确设置所有变量,但您将能够理解我的意思。

Sub test()

Dim Col As String: Col = "C"
Dim Rw As Long: Rw = 4

With ThisWorkbook.Sheets("Calculation")
    Debug.Print "=IF(" & Col & Rw & "=""-"",""-"",Cars!" & Col & Rw & "*" & Col & Rw & "*Data!$C$8)"
    .Cells(Rw + 1, Col).Formula = "=IF(" & Col & Rw & "=""-"",""-"",Cars!" & Col & Rw & "*" & Col & Rw & "*Data!$C$8)"
End With

End Sub

因此,您可能很容易忘记在 VBA 编程公式中使用 , 作为参数分隔符。当您将其放在工作表上时,Excel 会自动将其替换为您所在地区的适当分隔符。

要记住的另一件事;每当您要在此类函数中使用字符串值时,请不要忘记将其用双引号括起来!

不要忘记删除 Debug.print .... 行。它只是在那里显示输出:)

【讨论】:

  • 我试过了,它给了我错误“运行时错误'1004':应用程序定义或对象定义错误”......我什至不知道这意味着什么 -_-
  • @zepeu,正如您在屏幕截图中看到的,它对我有用。您是否在其他模块中尝试过我的代码?尝试单独使用并检查结果。
  • 好的,这行得通...但是我完全不知道这段代码中发生了什么...你能给出一个小的解释吗?我需要重用它并调整它,所以,更好地理解它;-) 这些 .address(false, false) 是什么?哪里去了;消失?这是如何工作的?
  • @zepeu,我删除了Address 的使用,这不是必需的,如果您不熟悉代码,它会使事情变得过于复杂。现在我只使用了一个字符串和长变量。当您在工作表中创建公式时,; 或分号是您所在区域的参数分隔符。尽管在通过 VBA 工作时,标准分隔符是 EN-us 分隔符,因此是逗号。当您使用工作表上的代码时,这将由 VBA 自动翻译。
  • 啊,我刚刚注意到您的最后一行说要摆脱“调试”行...现在更有意义了:p 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2018-06-21
  • 2021-03-29
相关资源
最近更新 更多