vba - 复制粘贴 VBA 问题
问题描述
我正在尝试编写一个宏,它采用一张纸的一部分并在下一张纸上粘贴值。我知道使用 select 并不理想。但我不知道该怎么做。过去,如果我没有事先选择工作表,则会出现超出范围的错误。在我之前定义的宏中,但我得到了一个
1004 应用程序定义或对象定义错误
y = Sheets("sheet1").Range("B1", Range("B2").End(xlDown)).Count
Sheets("Bucket12").Select
Sheets("Bucket12").Range("C2", Range("C2").End(xlDown)).Copy
Sheets("upload").Range(Cells(y, 2)).PasteSpecial xlPasteValues
Sheets("Bucket12").Range("E2", Range("E2").End(xlDown)).Copy
Sheets("upload").Range(Cells(y, 3)).PasteSpecial xlPasteValues
Sheets("Bucket12").Range("G2", Range("G2").End(xlDown)).Copy
Sheets("upload").Range(Cells(y, 5)).PasteSpecial xlPasteValues
Application.CutCopyMode = False
解决方案
问题是它Range()
需要两个参数 -Cell1
并且Cell2
- 你只给它一个参数,它会抛出错误 1004。
相反,只需使用.Cells()
:
y = Sheets("sheet1").Range("B1", Range("B2").End(xlDown)).Count
Sheets("Bucket12").Select
Sheets("Bucket12").Range("C2", Range("C2").End(xlDown)).Copy
Sheets("upload").Cells(y, 2).PasteSpecial xlPasteValues
Sheets("Bucket12").Range("E2", Range("E2").End(xlDown)).Copy
Sheets("upload").Cells(y, 3).PasteSpecial xlPasteValues
Sheets("Bucket12").Range("G2", Range("G2").End(xlDown)).Copy
Sheets("upload").Cells(y, 5).PasteSpecial xlPasteValues
Application.CutCopyMode = False
更好的是,让我们避免Select
,Copy
并且Paste
完全避免:
y = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, 2).End(xlUp).Row
Dim sht1 As Worksheet, sht2 As Worksheet, lastrow As Long
Set sht1 = ThisWorkbook.Worksheets("Bucket12")
Set sht2 = ThisWorkbook.Worksheets("upload")
lastrow = sht1.Cells(sht1.Rows.Count, 3).End(xlUp).Row
sht2.Range(sht2.Cells(y, 2), sht2.Cells(lastrow + y - 2, 2)).Value = _
sht1.Range(sht1.Cells(2, 3), sht1.Cells(lastrow, 3)).Value
lastrow = sht1.Cells(sht1.Rows.Count, 5).End(xlUp).Row
sht2.Range(sht2.Cells(y, 3), sht2.Cells(lastrow + y - 2, 3)).Value = _
sht1.Range(sht1.Cells(2, 5), sht1.Cells(lastrow, 5)).Value
lastrow = sht1.Cells(sht1.Rows.Count, 7).End(xlUp).Row
sht2.Range(sht2.Cells(y, 5), sht2.Cells(lastrow + y - 2, 5)).Value = _
sht1.Range(sht1.Cells(2, 7), sht1.Cells(lastrow, 7)).Value
作为另一个注意事项 - 它xlUp
比xlDown
确定数据输入的 lastrow 时更好使用。
推荐阅读
- html - 如何使用css网格
- spring-cloud-aws - 如何使用 IAM 角色将 Spring App 连接到 AWS SNS?
- javascript - 如果添加了新记录,则加载更多记录脚本显示前一组记录中相同的最后一条记录
- testing - 如何测试从子组件触发的自定义事件
- laravel - 当一个表的两列引用另一表的一列时,如何在 Laravel 中使用 JOIN?
- shell - 使用 shell 脚本将数据插入 postgres db
- excel - 通过使用条件/if 语句单击 Excel 中的特定单元格来运行宏
- git - 如何使用 Git 跟踪大型项目并迁移到 Github
- javascript - 使用异步 forEach 循环磁带“测试退出而没有结束”错误
- office365 - 将查询字符串参数传递给 Office 365 word 加载项