2017-03-15 211 views
0

预计年底我收到一个这样的错误:VBA Excel公式编译错误 - 声明

Compile error: Expected: End of Statement

虽然试图在下面的代码中使用Excel公式在VBA语句。发生

错误的"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 
+0

的([在式引号声明预期完]可能的复制http://stackoverflow.com/questions/24173238/expected-end-of-statement-in-formula引用) –

+0

尝试这个'“= MID(aa,FIND(”“for”,aa)+ 4,FIND(“”“”,aa,FIND(“”for“”,aa)+4) - (FIND(“”为“,aa)+4))”' –

+0

我将添加一条评论作为重复链接回答问题。使用'.FormulaR1C1 =“= MID(RC1,FIND(”“为”“,RC1)+ 4,FIND(”“”“,RC1,find(”“为”“,RC1)+4) - (FIND “”为“”,RC1)+4))“'。 'aa'是列A中显示的文本。'RC1'引用了公式所在行的列1(A)。 –

回答

0

这是一个有点长:

您需要添加"公式里面,我喜欢用Chr(34)添加它。因此,首先,您的aa是每当您在循环中前进i时都会发生变化,因此在公式中需要打破常量部分,并且每次使用时都要添加" & aa & "。 但是,你需要添加"aa,这就是为什么我体改你aa行:

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

其次,我添加了一个名为Myfor一个String变量,并将其值设置为它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