我无法弄清楚Excel VBA中的语法错误是什么,我看到的错误是:&#34;运行时错误1004:应用程序定义的错误或对象定义的错误&#34; < / p>
Sheets("Totals").Select
x = Range("A139").Activate
Range("E139:AB166").Formula = "=INDEX(""Model""!$A$3:$Z$1000,MATCH($" & x & ",""Model""!$A$3:$A$1000,0),MATCH(E$3,""Model""!$A$3:$Z$3,0))"
我正在尝试使用索引匹配公式,其中索引引用是文件中的另一个工作表。我试图在范围E139:AB166中填充公式,这样x变量被锁定到A列,最后一个匹配函数被锁定在第三行(E $ 3)。
x = Range("A139").Activate
这行代码应该强制光标到&#39;模型中的那个单元格。工作表。 &#39;型号&#39;是文件中工作表的名称。我想&#34;&#34;有必要提醒vba字符串是指工作表名称。 如果工作表名称由两个字符串组成,那么该怎样&#34;模型1和#34;。那么语法是什么呢?
""Model 1""!A3
&#39; X&#39;是添加新数据的单元格,我编写了一行代码来动态更改它。
x = Range("A" & insert_at).Activate
其中insert_at是一个等于最后一行的变量,在工作表中非空,+ 1。
insert_at = lastRow + 1
因此,我们的想法是从“模型”中动态添加其他数据。工作表到当前工作表&#39; Totals&#39;低于&#39;总计工作表中的任何现有数据。
我很感激您的帮助。
谢谢!
答案 0 :(得分:0)
在E139中键入正确的工作公式,然后使用this little Sub我写了一次,将其变成vba可用的公式字符串。
Sub RngToVba(src As Range)
'writes the VBA code to re-create the formulae in given range
'by Patrick Honorez - www.idevlop.com
'usage: from debug window, type RngToVba [L14:R14]
' or RngToVba range("L14:R14")
Dim c As Range
For Each c In src
Debug.Print "range(""" & c.Address & """).formula = """ & _
Replace(c.Formula, """", """""") & """"""
Next c
End Sub
并且......为了上帝的缘故,停止使用那些无用的select
和activate
。
Sheets("Totals").Range("E139:AB166").Formula = someString
更快,更容易调试,更易读。