我第一次写一个宏,我的一个Subs有问题。
当它第一次运行时,当ROW = 3时,它为Col = 3到Col = x-2的内部循环没有任何问题。但是当ROW增加到4时,我在内部Col循环(Col = 3)的第一次运行时出现错误。
错误说运行时错误' 13'和类型不匹配,但我不明白为什么它会在ROW = 3时首次执行循环时运行正常但在ROW = 4时失败。
manage
非常感谢任何帮助。
由于 玛蒂
答案 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
。