如何解决范围在Excel VBA中不正确
我正在尝试创建一个宏,以将数据从excel复制到另一个excel(模板-.xltx
)。
所以我写了一个代码:
Option Explicit
Sub GenerujD5()
Dim xWb As Workbook
Dim path As String
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim copylastrow As Long
Dim pasterow As Long
path = "C:\pc2\export\export.xls"
Set wsCopy = Workbooks.Open(path).Worksheets("export")
Set wsDest = ThisWorkbook.ActiveSheet
copylastrow = wsCopy.Cells(wsCopy.Rows.Count,"A").End(xlUp).Row
pasterow = wsDest.Cells(wsDest.Rows.Count,"A").End(xlUp).Offset(1).Row
wsCopy.Range("A2:M" & copylastrow).Copy
wsDest.Range("A5" & pasterow).PasteSpecial xlValues
End Sub
我的问题:
它正在复制数据,但没有复制到正确的单元格中。模板有4行,所以我必须将它们复制到5.行。但这会复制到55.行。
解决方法
您可以从目标表中计算出第一行,并将其写入变量pasterow
。假设目标工作表中有四行,则为5。
稍后您写wsDest.Range("A5" & pasterow).PasteSpecial xlValues
。现在,VBA将连接字符串"A5"
和变量pasterow
的内容,该变量与"A5" & 5"
相同,并将得到"A55"
。
如果您确定将始终填充四行,则可以摆脱变量pasterow
并只需编写
wsDest.Range("A5").PasteSpecial xlValues
但是更好的尝试是使用它并编写
wsDest.Range("A" & pasterow).PasteSpecial xlValues
或者,您也可以编写
wsDest.Cells(pasterow,1).PasteSpecial xlValues
或
wsDest.Cells(pasterow,"A").PasteSpecial xlValues
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。