如何将数组行复制到工作表?Error 424问题求助
解决VBA数组复制到工作表的Error 424错误
Error 424是对象要求错误,问题出在你把工作表区域的值存入closedArray后,它变成了一个二维Variant数组,而不是Range对象——数组本身没有Copy方法,所以调用.Copy会直接报错。
下面分两种场景给出正确实现:
场景1:复制整个数组到工作表
直接把数组赋值给目标区域即可,不需要用Copy方法:
Option Explicit Sub ArrayCopyTEST() Dim closedArray As Variant ' 读取Closed工作表已用区域数据到数组 closedArray = Worksheets("Closed").UsedRange.Value ' 将整个数组赋值到Sheet1的A1起始区域 Worksheets("Sheet1").Range("A1").Resize(UBound(closedArray, 1), UBound(closedArray, 2)).Value = closedArray End Sub
场景2:复制数组中的某一行到工作表
比如要复制数组的第2行,需要先匹配目标区域的列数,再赋值:
Option Explicit Sub CopySingleRowFromArray() Dim closedArray As Variant Dim targetRow As Integer targetRow = 2 ' 要复制的数组行号(数组索引从1开始) closedArray = Worksheets("Closed").UsedRange.Value ' 提取数组第targetRow行,赋值到Sheet1的A1起始区域 Worksheets("Sheet1").Range("A1").Resize(1, UBound(closedArray, 2)).Value = Application.Index(closedArray, targetRow, 0) End Sub
补充说明
- 从工作表读取的数组是1-based索引(行、列都从1开始计数)
- 使用
Resize是为了让目标区域的大小和数组(或数组行)的行列数匹配,避免赋值时因区域大小不匹配报错 - 如果要复制多行,可调整
Resize的第一个参数为对应行数,或用Application.Index提取多行数据
内容的提问来源于stack exchange,提问作者Steve S
相关产品推荐
相关产品推荐

