我正在 Workbook0.Worksheet1 中编写代码,将单元格从 Workbook1.WorkSheet1 复制到 Workbook2.Worksheet1 中的单元格
以下是代码:
Sub CopyInfo()
Dim WSCopy As Worksheet
Dim WSPaste As Worksheet
Set WSCopy = Workbooks(Cells(3, 4).Value).Worksheets("Sheet1")
Set WSPaste = Workbooks(Cells(4, 4).Value).Worksheets("Sheet1")
RowCopy = Range(Cells(11, 3)).Row
ColCopy = Range(Cells(11, 3)).Column
RowPaste = Range(Cells(11, 4)).Row
ColPaste = Range(Cells(11, 4)).Column
Data = "Data"
While Data <> ""
Data = WSCopy.Cells(RowCopy, ColCopy)
WSPaste.Cells(RowPaste, ColPaste) = Data
RowCopy = RowCopy + 1
ColCopy = ColCopy
RowPaste = RowPatse
ColPaste = ColPaste + 1
Wend
End Sub
第一次迭代运行良好,第二次迭代时出现错误。
希望有人告诉我我的错误在哪里。
答案1
我猜测该问题是由于您代码中的这一行出现拼写错误造成的:
RowPaste = RowPatse
由于 VBA 不需要您声明变量,因此它会分配给RowPaste
新的 Empty Variant 的值RowPatse
。因此代码第二次执行时会中断。
为了避免这种拼写错误问题,您可以Option Explicit
在模块顶部添加。这样,只要在代码中调用未声明的变量,编译器就会抛出错误。
除了这个问题之外,
ColCopy = ColCopy
RowPaste = RowPaste
可以被移除,因为它们根本没做任何事情。