嘿,伙计们,我一直在得到一个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)) )&")"
发布于 2013-11-04 11:33:11
你的公式应该更像:
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-04 10:26:12
这是不正确的:
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。我不能百分之百确定你想要的公式是什么,但这是行不通的。我想你想要这样的东西:
ActiveCell.Formula = "=INDEX(PrevSh & [LENGTH],MATCH([MATERIAL], PrevSh & [MATERIAL],0)) & ""("" & COUNTIF(PrevSh & [LENGTH],INDEX(PrevSh & [LENGTH],MATCH([MATERIAL],PrevSh & [Material],0)) )&"")"""
注意(
和)
周围的双引号,在结尾处有最后的结束引号。如果您试图在单元格中的公式中添加引号,则必须这样做。
https://stackoverflow.com/questions/19774418
复制