期待结束声明

时间:2013-11-04 18:21:53

标签: excel vba variables excel-formula

嘿伙计们我一直在Compile Error: Expected:End of Statement我将一个变量插入到我的公式中,因此可以根据不同的工作表名称反复使用此表。

你能告诉我我错过了什么吗? 我试图插入的这个公式给了我语法错误。

ActiveCell.Formula = "=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & "(" & COUNTIF(PrevSh & [LENGTH],INDEX(PrevSh & [LENGTH],MATCH([MATERIAL],PrevSh & [Material],0)) )&")"

Dim PrevSh As String
PrevSh = ActiveSheet.Previous.Name

Range(TableName & "[QTY OF LNG]").Select
ActiveCell.Formula = "=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & "(" & COUNTIF(PrevSh & [LENGTH],INDEX(PrevSh & [LENGTH],MATCH([MATERIAL],PrevSh & [Material],0)) )&")"

2 个答案:

答案 0 :(得分:2)

这是不正确的:

ActiveCell.Formula = "=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & "(" & COUNTIF(PrevSh & [LENGTH],INDEX(PrevSh & [LENGTH],MATCH([MATERIAL],PrevSh & [Material],0)) )&")"

它将此解析为字符串:"=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & ",然后它会命中括号并且不知道如何处理它。同样的事情发生在最后)&")"

编辑:澄清一下,问题不在于您的引号,而在随机括号中更多。你基本上有这个:

ActiveCell.Formula = "Some nice text"("Some more text")"

这不是有效的VBA。我不是100%确定你想要的公式,但这不会做到。我你想要这样的东西:

ActiveCell.Formula = "=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & ""("" & COUNTIF(PrevSh & [LENGTH],INDEX(PrevSh & [LENGTH],MATCH([MATERIAL],PrevSh & [Material],0)) )&"")"""

请注意()周围的双引号,最后加上最后一个引号。如果您试图在单元格的公式中使用引号,那么就必须这样做。

答案 1 :(得分:2)

您的公式需要更像:

PrevSh = "OldTableName"
ActiveCell.Formula = "=INDEX(" & PrevSh & "[LENGTH],MATCH([@MATERIAL]," & PrevSh & "[MATERIAL],0)) & ""("" & COUNTIF(" & PrevSh & "[LENGTH],INDEX(" & PrevSh & "[LENGTH],MATCH([@MATERIAL]," & PrevSh & "[Material],0)))&"")"""

重要的是使用旧表格名称而非工作表名称。