2016-12-14 139 views
0

我不能完全弄清楚在Excel VBA中的语法错误是,我看到的错误是:“运行时错误1004:应用程序定义或对象定义的错误”Excel VBA中 - 语法错误

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 

这行代码应强制光标到该小区的“模型”工作表。 '模型'是文件中工作表的名称。我认为有必要提醒vba该字符串是指工作表名称。 如果工作表名称由两个字符串组成,如“Model 1”,该怎么办?那么这个语法是什么呢?

""Model 1""!A3 

'x'是添加新数据的单元格,我写了一行代码让它动态改变。

x = Range("A" & insert_at).Activate 

哪里insert_at是等于最后一排,在不为空的工作表中的变量,+ 1

insert_at = lastRow + 1 

这样的想法是,以动态地从“模型”添加额外的数据工作表添加到“总计”工作表中任何现有数据下面的当前工作表“总计”中。

我很欣赏这个的任何援助。

谢谢!

+0

双引号。如果您需要将文字显示为文字,请使用Chr(34)。如'CHR(34)& “模型” &人权委员会'(34),而不是“ ”“ 模型 ”“' – Moacir

+1

@OAK是'x'假设是在列A不同的行号? “'字符例如,'” –

+0

或者改为@莫阿西尔的建议,您可以加倍对引号使用它们作为一个文字上的'“”型号“”“' - 外引号是字符串分隔符,和'” “Model”之前和之后的单词表示文字'“'。 – jsheeran

回答

0

Type在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 

更快,更容易调试和更具可读性。

+0

@Shai Rado请参阅下面的附加信息 – OAK