在VBA中循环浏览文本文件时出现不匹配错误

时间:2019-01-29 20:18:53

标签: vba type-mismatch

我有一个vba脚本,该脚本在一定范围内运行,并且如果数字是数字,则添加(或减去)数字。

当我使用的文件是csvs或xls文件时,此脚本有效。 但是,当我尝试通过它运行txt文件时,此行代码在第一个单元格上出现不匹配错误。

If (SourceWb.Sheets(1).Cells(r, c) <> "") Then

有人对此有修复程序吗? 完整的相关脚本如下。

For r = startR To endR
    For c = startC To endC

        If (SourceWb.Sheets(1).Cells(r, c) <> "") Then
            If IsNumeric(SourceWb.Sheets(1).Cells(r, c)) = True Then

                If plusMinus = "+" Then
                    TempWb.Sheets(1).Cells(r, c).Value2 = TempWb.Sheets(1).Cells(r, c).Value2 + SourceWb.Sheets(1).Cells(r, c).Value2 * trueUp
                Else
                    TempWb.Sheets(1).Cells(r, c).Value2 = TempWb.Sheets(1).Cells(r, c).Value2 - SourceWb.Sheets(1).Cells(r, c).Value2 * trueUp
                End If

            End If
        End If

    Next c
Next r

1 个答案:

答案 0 :(得分:0)

不匹配错误表示VBA无法执行其尝试实现的操作,因为类型或值不兼容。在这种情况下,单元格的值会给您一个错误2029(#NAME?)。错误是具有特定状态的特定值。因此,当您尝试获取TempWb.Sheets(1).Cells(r, c).Value2 <> ""时,VBA期望左侧有类似字符串的内容。但是现在出现错误,因此无法进行比较。

因此,根本的问题是,不能像CSV到Excel电子表格一样吸收txt文件。您需要打开文件并逐行读取其内容,然后将内容放入变量中,然后对该变量进行操作。一个简单的Google request将为您提供大量示例,赠予和操作方法。抱歉让您像这样挂起,但是,至少应该自己尝试一下。