【问题标题】:VBA Excel formula compile error - expected end of statementVBA Excel公式编译错误 - 预期的语句结束
【发布时间】:2017-03-15 20:10:25
【问题描述】:

我收到此错误:

编译错误:预期:语句结束

在下面的代码中尝试在 VBA 语句中使用 Excel 公式时。

错误发生在"FIND("for ","...

For i = 2 To lastRow
    aa = ThisWorkbook.Sheets(3).Cells(i, "A").Text                  
    ThisWorkbook.Sheets(3).Cells(i, "E").Formula = "=MID(aa,FIND("for ",aa)+4,FIND(" ",aa,FIND("for ",aa)+4)-(FIND("for ",aa)+4))"
Next i

【问题讨论】:

  • 试试这个"=MID(aa,FIND(""for "",aa)+4,FIND("" "",aa,FIND(""for "",aa)+4)-(FIND(""for "",aa)+4))"
  • 我会在重复链接回答问题时添加评论。使用.FormulaR1C1 = "=MID(RC1,FIND(""for "",RC1)+4,FIND("" "",RC1,find(""for "",RC1)+4)-(FIND(""for "",RC1)+4))"aa 是 A 列中显示的文本。RC1 引用公式所在行的第 1 (A) 列。
  • @RobinMackenzie 但aa 是一个变量,您需要通过添加" & aa & "从公式中提取它
  • @ShaiRado - 是的,你是对的 - 没有正确阅读问题:(我认为这是一个命名范围。

标签: excel vba


【解决方案1】:

有点长:

您需要在公式中添加",我喜欢使用Chr(34) 来添加它。

首先,您的aa 是一个变量,每次您在循环中推进i 时都会发生变化,因此在公式中您需要打破常量部分并在每次使用时添加" & aa & "。 但是,您需要将" 添加到aa,这就是为什么我将您的aa 行修改为:

aa = Chr(34) & ThisWorkbook.Sheets(3).Cells(i, "A").Text & Chr(34)

其次,我添加了一个名为MyforString变量,并将其值设置为Myfor = Chr(34) & "for " & Chr(34),只是为了稍微“缩短”公式。

代码

Dim aa          As String
Dim Myfor       As String

Myfor = Chr(34) & "for " & Chr(34)
For i = 2 To lastRow
    aa = Chr(34) & ThisWorkbook.Sheets(3).Cells(i, "A").Text & Chr(34)
    ThisWorkbook.Sheets(3).Cells(i, "E").Formula = "=MID(" & aa & ",FIND(" & Myfor & "," & aa & ")+4, FIND("" ""," & aa & ",FIND(" & Myfor & "," & aa & ")+4)-(FIND(" & Myfor & "," & aa & ")+4))"
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多