Excel 我的If语句给了我一个;运行时错误13:类型不匹配“;消息
在我提问之前,让我先介绍一下背景知识。我试图解析一个大的文本文件(250000多页),并从中提取值。我使用特定的变量来获取我要查找的值,如下面所示。但是,我的Excel 我的If语句给了我一个;运行时错误13:类型不匹配“;消息,excel,vba,Excel,Vba,在我提问之前,让我先介绍一下背景知识。我试图解析一个大的文本文件(250000多页),并从中提取值。我使用特定的变量来获取我要查找的值,如下面所示。但是,我的If语句(示例代码顶部的长语句)给出了消息 “运行时错误13类型不匹配” 见下面的代码: If rptText Like "(0825)" And _ Trim(Mid(rptText, 85, 9)) = "(0826)" And _ Trim(Mid(rptText, 85, 9)) = "(0827)" And _
If
语句(示例代码顶部的长语句)给出了消息
“运行时错误13类型不匹配”
见下面的代码:
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
你们所有人的任何帮助都将是巨大的,提前感谢 编辑:在尝试了答案之后,我需要再解释一下。我引用的变量(0825082608270828)用于解析9个字符长的值。下面是几个示例,说明它在文件中的外观: (0825)461308108 或 (0826)921908109
我想要任何前面有变量0825、0826等的值来获取这些值,这就是为什么我说我的trim是trim(Mid(rptText,85,9))。有什么建议吗 如果语句在几行上出现问题,这在VBA中是不允许的。您需要使用下划线“\u1”字符(本例中为延续字符)让编译器知道这是一行代码:
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提到的,你的逻辑有问题。修剪(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
如果语句在几行上出现问题,这在VBA中是不允许的。您需要使用下划线“\u1”字符(本例中为延续字符)让编译器知道这是一行代码:
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提到的,你的逻辑有问题。修剪(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
这是一些有趣的代码,因为IF
Trim(Mid(rptText,85,9))中的这一行,您得到了错误,那么
您将Trim语句与什么进行比较?还有,如果你的情况没有意义。Trim(Mid(rptText,85,9))=“0826”
和Trim(Mid(rptText,85,9))=“0827”
如何同时为真?您想使用还是?这是您的一些有趣的代码。由于IFTrim(Mid(rptText,85,9))中的这一行,您会遇到错误,那么您将Trim语句与什么进行比较?还有,如果你的情况没有意义。Trim(Mid(rptText,85,9))=“0826”
和Trim(Mid(rptText,85,9))=“0827”
如何同时为真?您想在原始帖子中使用还是?+1:)顺便说一句,如果在一行中。包装由Trinimon完成,参见修订历史记录。另外,你们上面帖子中的另一个人是我:)谢谢,伙计们!我将尝试任何一种方案,看看是否可以让它运行。再次感谢所有的投入。:)+1:)顺便说一句,在最初的帖子中,IF是一行。包装由Trinimon完成,参见修订历史记录。另外,你们上面帖子中的另一个人是我:)谢谢,伙计们!我将尝试任何一种方案,看看是否可以让它运行。再次感谢所有的投入。:)