嘿伙计们我一直在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)) )&")"
答案 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)))&"")"""
重要的是使用旧表格名称而非工作表名称。