You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组行复制到工作表?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:05:23