excel vba - 语法错误

时间:2016-12-14 10:53:12

标签: excel vba excel-vba

我无法弄清楚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;总计工作表中的任何现有数据。

我很感激您的帮助。

谢谢!

1 个答案:

答案 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 

并且......为了上帝的缘故,停止使用那些无用的selectactivate

Sheets("Totals").Range("E139:AB166").Formula = someString

更快,更容易调试,更易读。