VBA复制数据到指定列空白单元格报错,求解决方案
问题分析与修正方案
你的代码里第二个区域粘贴报错,主要是几个拼写语法错误和逻辑问题,具体修正如下:
错误点梳理
else块里的pasteSheet被拆成了paste和Sheet,属于拼写错误,导致对象未定义End(x1up)里的x1是数字1,应该是字母l,即End(xlUp)- 硬编码
M5038不够灵活,应该动态获取M列最后一个非空单元格的下一行 - 不必要的
Select操作容易引发错误,直接对单元格对象操作更稳定
修正后的完整代码
Sub CopyAtoKIntoBankData() Dim copySheet As Worksheet Dim pasteSheet As Worksheet Dim lastRowM As Long ' 存储目标表M列最后一行行号 Set copySheet = Worksheets("Data Conversion") Set pasteSheet = Worksheets("Bank Data") ' 复制A:K列到目标表A列下一个空白行 copySheet.Range("A2:K100").Copy pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlValues Application.CutCopyMode = False ' 复制源表M2:M100到目标表M列下一个空白行 copySheet.Range("M2:M100").Copy ' 动态获取目标表M列最后一个非空单元格的行号 lastRowM = pasteSheet.Cells(Rows.Count, "M").End(xlUp).Row ' 粘贴到下一行 pasteSheet.Cells(lastRowM + 1, "M").PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub
额外优化建议
- 如果不想复制空行,可以先筛选源区域的非空单元格再复制,避免粘贴大量空白
- 关闭屏幕更新可以提升代码运行速度,在代码开头加
Application.ScreenUpdating = False,结尾加Application.ScreenUpdating = True
内容的提问来源于stack exchange,提问作者LCEE
相关产品推荐
相关产品推荐

