Excel 将数组复制到单元格区域

Excel 将数组复制到单元格区域,excel,vba,Excel,Vba,我想将数组mastersheet()的值复制到一系列大小相同的单元格上 mastersheet()最初声明为变体 Dim mastersheet()作为变体 最终在代码中,它有4个“列”或维度。 ReDim母版(1,1,1,1) 最后,字符串将添加到第2列或第二个维度中。并非所有列都具有相同的数据类型 wbmastersheet.工作表(1).范围(“A1:D”和UBound(mastersheet,4))=mastersheet() 我得到下面的错误 错误13:类型不匹配 有人能解决这个问题吗

我想将数组
mastersheet()
的值复制到一系列大小相同的单元格上

mastersheet()
最初声明为变体
Dim mastersheet()作为变体

最终在代码中,它有4个“列”或维度。
ReDim母版(1,1,1,1)

最后,字符串将添加到第2列或第二个维度中。并非所有列都具有相同的数据类型

wbmastersheet.工作表(1).范围(“A1:D”和UBound(mastersheet,4))=mastersheet()

我得到下面的错误

错误13:类型不匹配


有人能解决这个问题吗?

你似乎把排名与实际维度混淆了

重新编写代码,使母版为1:x,1:4。将值放入数组中,如下所示:

redim mastersheet(1 to 2, 1 to 4)
mastersheet(1, 1) = "A1"
mastersheet(1, 2) = "B1"
mastersheet(1, 3) = "C1"
mastersheet(1, 4) = "D1"
mastersheet(2, 1) = "A2"
mastersheet(2, 2) = "B2"
mastersheet(2, 3) = "C2"
mastersheet(2, 4) = "D2"
像这样将值写回工作表

wbmastersheet.Worksheets(1).range("A1").Resize(UBound(mastersheet, 1), UBound(mastersheet, 2)) = mastersheet

但是mastersheet()在这一点上是一段代码的结果,该代码向其添加了值。。。据我所知,知道数组维度的唯一方法是使用UBound函数。如果您有一个值数组,它模仿工作表上的行×列,那么您就有一个1到x,1到y的数组。x是行数,y是列数。如果您有4个字段的两个“记录”(例如A1:D2),则您有1到2,1到4。不是(1,1,1,1)。你是对的,这对我来说是一个很大的概念错误。不用担心;我希望上面的简单演示能帮助解决问题。另外值得注意的是,
range(“A1:D”&UBound(mastersheet,4))
将返回一个错误,因为
UBound()
返回一个整数
Range()
需要字符串,因此必须将整数转换为字符串
Range(“A1:D”&CStr(UBound(mastersheet,4))
这可能是在尝试将字符串与整数连接时出现错误13的原因