将行数据复制到另一列最后一行时出现VBA 1004应用定义错误
VBA Error 1004 问题修复
错误原因
- 数据类型溢出:VBA里
Integer是16位整数,最大值仅32767。Excel 2007及以后版本支持1048576行,当F列最后一行超过32767时,finalRowF会溢出,触发1004错误。 - 粘贴范围超限:复制整行(共16384列)后从H列开始粘贴,所需列数会超出Excel最大列数(XFD列,对应第16384列),导致无法完成粘贴操作。
修复后的代码
Sub Example() Dim finalRowF As Long Dim targetRow As Long Dim sourceRange As Range ' 获取F列最后一行行号 finalRowF = Cells(Rows.Count, "F").End(xlUp).Row targetRow = finalRowF + 1 ' 定义A1所在行的有效数据区域(从A1到该行最后一个非空列) Set sourceRange = Range("A1", Cells(1, Columns.Count).End(xlToLeft)) ' 复制到目标行的H列起始位置 sourceRange.Copy Cells(targetRow, "H") End Sub
关键修复点
- 将
finalRowF的类型从Integer改为Long,支持Excel的最大行数,避免溢出问题。 - 复制A1所在行的有效数据区域而非整行,既满足需求,又不会超出工作表列数限制。
内容的提问来源于stack exchange,提问作者Francisco Augusto Varela Aguir
相关产品推荐
相关产品推荐

