VBA - 将字符串变量传递给公式产生 "application-defined or object-defined error"

VBA - Passing string variable to formula yields "application-defined or object-defined error"

我遇到了以下问题:

Sheets("Workbook 1 ").Range("N" & integerv).Formula = "=Workbook2!""" & column_string & """ 3)"

(整数是某个整数)不断返回“对象定义或应用程序定义的错误”。

column_string是

得到的字符串变量

column_string = Split(Cells(a,b).Address(True,False), "$")(0)

基本上只包含我要引用的单元格的列字母。

我是否错误地传递了字符串变量?如果我想另外传递一个整数变量而不是“3”,我的代码应该是什么样子?

感谢任何帮助,我已经坚持了很长时间了。

你我这样试试这个公式:

Dim b As Long, column_string As String
b = 2: column_string = "C" 'the result simulation of your extraction using Split
 Sheets("Workbook 1 ").Range("N" & integerv).Formula = "=Workbook2!" & column_string & 3
 'having the b variable value, no need to extract the column letter:
 Sheets("Workbook 1 ").Range("N" & integerv).Formula = "=Workbook2!" & cells(3, b).Address(0, 0)

关于 VBA

中的公式的一两个想法

您如何为 Excel 中的 A 列编写公式?

=Workbook2!A3

在 VBA 你会这样做:

rng.formula = "=Workbook2!A3"

你也可以这样写:

rng.Formula = "=Work" & "book2" & "!A3"

或者像这样:

rng.Formula = "=" & "Work" & "book" & "2" & "!" & "A3"

但当然在这种情况下(你的 post)你想这样写:

rng.Formula = "=Workbook2!" & "A" & "3"

现在当你让它动态化时,你知道该怎么做了:

rng.Formula = "=Workbook2!" & column_string & "3"

正如评论中提到的 FunThomas 一样,您可以使用变量(尤其是当存在更复杂的变量时,您应该这样做)。然后你可以为公式创建一个新的 Sub 并写...

Dim strFormula As String
strFormula = "=Workbook2!" & "A" & "3"

...并在立即 window (CTRL+G) 中查看书面结果...

Debug.Print strFormula

...并修改公式,直到正确为止。