执行内部循环 - 错误'类型不匹配'

时间:2017-02-24 16:21:30

标签: vba excel-vba type-mismatch excel

我第一次写一个宏,我的一个Subs有问题。

当它第一次运行时,当ROW = 3时,它为Col = 3到Col = x-2的内部循环没有任何问题。但是当ROW增加到4时,我在内部Col循环(Col = 3)的第一次运行时出现错误。

错误说运行时错误' 13'和类型不匹配,但我不明白为什么它会在ROW = 3时首次执行循环时运行正常但在ROW = 4时失败。

manage

非常感谢任何帮助。

由于 玛蒂

1 个答案:

答案 0 :(得分:3)

Value不一定是字符串。 @Comintern是对的 - 不要重新定义Row。假设您将Row更改为RowNum,请在循环中尝试此操作:

Cells(Col + 3, OutputCol).Value = "L" & CStr(Cells(5, Col + 1).Value) & _
    "C" & CStr(Cells(6, RowNum).Value) & "  " & _
    "EXEC TRANEXEC, " & Line & CStr(Cells(5, Col + 1).Value) & "," & _
    Company & CStr(Cells(6, RowNum).Value)

CStr()调用确保您获得Value的字符串表示形式,以便字符串连接运算符&始终具有要使用的字符串。

修改

正如@ Mat的Mug所说,在你包含的代码片段之前,你应该做的事情如下:

Dim ws as Worksheet
set ws = ActiveSheet

(或您想要的任何工作表,而不是ActiveSheet)。然后,对Cells的每次通话都应改为ws.Cells。这样,您将始终知道您所指的是哪个工作表,并且您不会因为您无法控制的因素而产生奇怪的错误。

同样,代替ActiveWorkbook,执行Dim wb as Workbook并使用,例如wb.Sheets