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_:很高兴我能帮上忙!但是,当有人回答我们的问题时,我们在这里勾选“代码左侧”复选框,以使其成为可接受的答案。这将有助于其他人搜索类似问题。我没有提到我的答案!请,为了其中一个对你更有用的答案而做。。。