调试模式中的公式与不是

时间:2015-10-14 02:48:47

标签: excel vba excel-vba excel-2013

所以我正在编写一个excel VBA程序,它将具有特定名称的所有csv文件读入工作簿上的单独工作表中。

它正在读取文件而没有任何问题。当它将数据从文件转换到一个数组时会出现问题,该数组意味着包含目录所有文件中的所有相关数据。

要读取文件并按行分隔,

我正在使用:

Do Until EOF(1)

        Line Input #1, LineFromFile

        lineitems = Split(LineFromFile, Chr(10))

在模块的下方,当满足该数据行中的特定条件时,我将lineitems传递给数据数组。为清楚起见,表达式是将文件行中的日期值与文件名上的日期标记进行比较。

ElseIf (Left(lineitems(Line), 8) = Right(Left(FileTime(FileNum), 6), 2) + "/" + Right(Left(FileTime(FileNum), 4), 2) + "/" + Left(FileTime(FileNum), 2)) Then                 

                Proxy = CStr(lineitems(Line))
                DataArray(InverterNumber - 1, m(InverterNumber - 1)) = Proxy

正如您所看到的,我已经添加了一个代理步骤来尝试确保数据传播,但无济于事。我还添加了一个故障安全措施,以确保没有空行进入DataArray:

If Len(DataArray(InverterNumber - 1, m(InverterNumber - 1))) = Len(CStr(lineitems(Line))) Then

                    Test(InverterNumber - 1, m(InverterNumber - 1)) = Len(DataArray(InverterNumber - 1, m(InverterNumber - 1)))
                    m(InverterNumber - 1) = m(InverterNumber - 1) + 1

                End If

现在,如果我在其发布模式中运行该程序,它将返回一系列空列,由于故障保护而不应该发生。 但是,当我通过调试模式运行它时,如果我观察到该步骤,它会正确地添加数据。

有什么方法可以确保正确翻译这些值吗?

有什么我可以做得更好吗?

1 个答案:

答案 0 :(得分:1)

这会从您的文件中读取一行,但不会返回分隔该行的换行符:

Line Input #1, LineFromFile

然后这个:

lineitems = Split(LineFromFile, Chr(10))

你真的在"行"中有换行符吗?你的CSV文件?如果是,则有助于显示一些示例内容。