Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中循环浏览文本文件时出现不匹配错误_Vba_Type Mismatch - Fatal编程技术网

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

在VBA中循环浏览文本文件时出现不匹配错误,vba,type-mismatch,Vba,Type Mismatch,我有一个vba脚本,它可以在一个范围内运行,如果数字是数字,则可以进行加(减)运算 当我使用的文件是CSV或xls文件时,此脚本可以工作。 然而,当我试图通过它运行一个txt文件时,我在这行代码的第一个单元格中得到了一个不匹配的错误 If(SourceWb.Sheets(1).Cells(r,c)”)则 有人对此有办法吗。 下面是完整的相关脚本 For r = startR To endR For c = startC To endC If (SourceWb.Shee

我有一个vba脚本,它可以在一个范围内运行,如果数字是数字,则可以进行加(减)运算

当我使用的文件是CSV或xls文件时,此脚本可以工作。 然而,当我试图通过它运行一个txt文件时,我在这行代码的第一个单元格中得到了一个不匹配的错误

If(SourceWb.Sheets(1).Cells(r,c)”)则

有人对此有办法吗。 下面是完整的相关脚本

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
r=startR至endR的

对于c=startC至endC
如果(SourceWb.Sheets(1).Cells(r,c)”,则
如果IsNumeric(SourceWb.Sheets(1).Cells(r,c))=True,则
如果plusMinus=“+”则
临时工作表(1).单元格(r,c).值2=临时工作表(1).单元格(r,c).值2+源工作表(1).单元格(r,c).值2*trueUp
其他的
TempWb.Sheets(1).单元格(r,c).Value2=TempWb.Sheets(1).单元格(r,c).Value2-SourceWb.Sheets(1).单元格(r,c).Value2*trueUp
如果结束
如果结束
如果结束
下一个c
下一个r

不匹配错误意味着VBA无法执行其试图实现的操作,因为类型或值不兼容。在这种情况下,单元格的值会给您一个错误2029(#NAME?)。错误是具有特定状态的特定值。因此,当您试图获取
TempWb.Sheets(1).Cells(r,c).Value2“
时,VBA希望左侧有类似字符串的内容。但是现在它得到了一个错误,所以它无法进行比较


因此,根本的问题是,txt文件不能像CSV一样被同化为Excel电子表格。您需要打开文件并逐行读取其内容,将该内容放入变量中,然后使用该变量执行某些操作。一个简单的例子会给你提供大量的例子,并告诉你如何去做。很抱歉让你这么挂了,但是,你至少应该自己尝试一下。

什么是
SourceWB
?当您收到此错误时,
单元格(r,c)
中的值是多少?sourceWB是我从中提取的文件。当我得到一个错误时,单元格中的值是:dd->你不也应该检查
TempWb.Sheets(1).Cells(r,c).Value2
也是数字的吗?我不这么认为,因为TempWb只是从一个类似的文件(相同的格式只是不同的数字)复制和粘贴的@CharlesPL它的错误2029