0

嘿伙计们,我不断得到一个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)) )&")"
4

2 回答 2

2

您的公式需要更像:

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

重要的是使用前一张表中的旧表名,而不是表名。

于 2013-11-04T19:33:11.470 回答
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)) )&"")"""

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

于 2013-11-04T18:26:12.640 回答