我的VBA代码提取括号之间的信息是返回types不匹配,但我不太清楚为什么。

我写了下面的脚本来区分“<”和“>”之间的字符。

我拥有的是:

Dim Rng As Range Dim i As Long i = 2 While i <= 20000 Set Rng = Range("B" & i) If InStr(Rng, "<") = 0 Then i = i + 1 ElseIf InStr(Rng, "<") > 0 Then Rng.Offset(0, 1).FormulaR1C1 = "=mid(left(RC[-1],find(" > ",RC[-1])-1),find(" < ",RC[-1])+1,len(RC[-1]))" i = i + 1 Else: i = i + 1 End If Wend End Sub 

当我用一些简单的东西来代替长公式时,效果很好。 然而,当我运行这个时,我得到一个types不匹配。 我有一种感觉,我错过了很简单的事情。 有什么build议么?

谢谢

" "quoted"string中的"quoted"需要被转义(加倍),如果它们不是如何知道string真正结束的位置?

 FormulaR1C1 = "=mid(left(RC[-1],find("" > "",RC[-1])-1),find("" < "",RC[-1])+1,len(RC[-1]))" 

(在你当前的代码中, <>在string之外,所以被解释为GT / LT运算符)

亚历克斯已经给出了答案,我只是添加这个来减less代码,如果感兴趣的话

 Sub test() Dim Rng As Range Dim i As Long i = 2 While i <= 20000 Set Rng = Range("B" & i) If InStr(Rng, "<") > 0 Then If InStr(Rng, "<") > 0 Then Rng.Offset(0, 1).FormulaR1C1 = "=mid(left(RC[-1],find("">"",RC[-1])-1),find(""<"",RC[-1])+1,len(RC[-1]))" End If i = i + 1 Wend End Sub