VBA导入Inv工作表N列数据到Rep工作表B列时出现运行时错误1004
VBA运行时错误1004解决方法
错误核心原因
你这段代码报错的关键是左右单元格区域的维度不匹配:
- 右侧
Inv.Range("N9:N" & 8 + fw2)是包含fw2+1行的纵向数据区域 - 左侧
.Range(.Cells(lastrow, "B"))只是单个单元格,直接给单个单元格赋值多行数据,会触发维度不兼容的1004错误。
修复后的代码
调整左侧区域范围,让它和右侧行数匹配,两种简洁写法任选:
写法1:用Resize扩展目标区域
With Rep ' 保留原有其他代码 .Cells(lastrow, "B").Resize(fw2 + 1, 1).Value = Inv.Range("N9:N" & 8 + fw2).Value End With
写法2:直接指定单元格范围
With Rep ' 保留原有其他代码 .Range(.Cells(lastrow, "B"), .Cells(lastrow + fw2, "B")).Value = Inv.Range("N9:N" & 8 + fw2).Value End With
额外注意事项
- 确认
lastrow变量已正确获取Rep工作表B列的最后有效行号,比如可以用lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row来确保取值准确,避免赋值到无效位置。 - 核对
fw2的计算逻辑:fw2 = Me.ListBox1.ListCount - 1,当ListBox有n条数据时,fw2为n-1,对应8+fw2是N列的最后一行,行数刚好是fw2+1,和Resize参数匹配。
内容的提问来源于stack exchange,提问作者Mohamed Amin
相关产品推荐
相关产品推荐

