Excel VBA-将字符串变量传递给公式会产生;应用程序定义或对象定义错误“;

Excel VBA-将字符串变量传递给公式会产生;应用程序定义或对象定义错误“;,excel,vba,string,formula,Excel,Vba,String,Formula,我遇到以下问题: Sheets(“工作簿1”).Range(“N”和integerv.Formula=“=Workbook2!””和column\u string&“3”) (integerv是某个整数)不断返回“对象定义或应用程序定义错误” 列_string是通过以下方式获得的字符串变量: column\u string=Split(单元格(a、b).地址(真、假),“$”(0) 基本上只包含我要引用的单元格的列字母 我是否错误地传递了字符串变量?如果我想另外传递一个整数变量而不是“3”,我的

我遇到以下问题:

Sheets(“工作簿1”).Range(“N”和integerv.Formula=“=Workbook2!””和column\u string&“3”)

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

列_string是通过以下方式获得的字符串变量:

column\u string=Split(单元格(a、b).地址(真、假),“$”(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"
rng.Formula = "=Workbook2!" & "A" & "3"
或者像这样:

rng.Formula = "=Work" & "book2" & "!A3"
rng.Formula = "=" & "Work" & "book" & "2" & "!" & "A3"
rng.Formula = "=Workbook2!" & "A" & "3"
当然,在这种情况下(你的帖子),你想这样写:

rng.Formula = "=Work" & "book2" & "!A3"
rng.Formula = "=" & "Work" & "book" & "2" & "!" & "A3"
rng.Formula = "=Workbook2!" & "A" & "3"
现在,当您将其设置为动态时,您知道要做什么:

rng.Formula = "=Workbook2!" & column_string & "3"
正如注释中提到的
FunThomas
,您可以使用一个变量(尤其是当有更复杂的变量时)。然后你可以为公式创建一个新的子元素,然后写下

Dim strFormula As String
strFormula = "=Workbook2!" & "A" & "3"
…并在即时窗口(CTRL+G)中使用

Debug.Print strFormula

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

调试提示:使用
Debug.Print
打印所需公式,以查看它是否是您认为的公式,然后再尝试将其写入单元格。我想你有额外的报价。“Workbook2”是一个工作表名称吗?如果是,是否要创建指向此工作表单元格的链接?将
列\u字符串设置为
B
(例如),公式结果为
=Workbook2!“B”3)
这显然是无效的。使用中间变量创建公式字符串并与调试器进行检查。
Sheets(“工作簿1”).Range(“N”)和integerv.formula=“=Workbook2!”&column\u string&“3”
感谢您详细的回复,这非常有帮助。感谢您的回复,我不知道您可以在公式中使用“`&”单元格(3,b)。地址(0,0)和“`”。这大大简化了事情。@mj_:很高兴我能帮上忙!但是,当有人回答我们的问题时,我们在这里勾选“代码左侧”复选框,以使其成为可接受的答案。这将有助于其他人搜索类似问题。我没有提到我的答案!请,为了其中一个对你更有用的答案而做。。。