我的If语句给我一个“运行时错误13:types不匹配”的消息

在我的问题之前,让我给你一些背景知识。 我试图parsing一个大的文本文件(250,000多页),并从中拉取值。 我正在使用特定的variables来获取我正在查找的值,如下所示。 然而,我的If语句(在我的示例代码的顶部长的一个)给我的信息

“运行时错误13types不匹配”

见下面的代码:

 If rptText Like "(0825)" And _ Trim(Mid(rptText, 85, 9)) = "(0826)" And _ Trim(Mid(rptText, 85, 9)) = "(0827)" And _ Trim(Mid(rptText, 85, 9)) = "(0828)" And _ Trim(Mid(rptText, 85, 9)) Then cusip0095 = True Do rptText = ts.ReadLine If rptText Like "*MF OMNI*" Then mfOmni0095 = Trim(Mid(rptText, 78, 13)) Exit Do End If If rptText Like "*CONTROLLED*" Then total0095 = Trim(Mid(rptText, 78, 13)) Exit Do End If Loop 

任何你的帮助都会很好,并且提前致谢!

编辑:在尝试答案后,我需要多解释一下。 我引用的variables(0825,0826,0827,0828)用于parsing长度为9个字符的值。 下面是几个在文件上的外观示例:

(0825)461308108

要么

(0826)921908109

我想要任何具有variables0825,0826等的值来提取这些值,这就是为什么我说我的trim是Trim(Mid(rptText,85,9))。 有什么build议么?

你有你的问题,如果在几行,这是不允许在VBA语句。 您需要使用下划线“_”字符(在这种情况下为连续字符),让编译器知道这是一行代码:

 If rptText Like "(0825)" And _ Trim(Mid(rptText, 85, 9)) = "(0826)" And _ Trim(Mid(rptText, 85, 9)) = "(0827)" And _ Trim(Mid(rptText, 85, 9)) = "(0828)" And _ Trim(Mid(rptText, 85, 9)) Then 

正如Siddharth Rout所说,你的逻辑有问题。 Trim(Mid(rptText,85,9))可以等于“(0826)”和“(0827)”。

尝试这样的事情:

 Dim ThisTextPart As String ThisTextPart = Trim(Mid(rptText, 85, 6)) If rptText Like "*(0825)*" Or _ ThisTextPart = "(0826)" Or _ ThisTextPart = "(0827)" Or _ ThisTextPart = "(0828)" Then