如何用VBA数组填充Excel多行多列的单元格区域?
VBA数组填充多行多列Excel单元格区域的问题与解决
单行/单列区域的实现方法
如果仅需填充单行或单列区域,使用Array()创建一维数组即可直接赋值,示例代码如下:
Sub testArrayOne() Dim arrHeader As Variant arrHeader = Array("1", "", "2", "", "3") Sheets(2).Range("A1:A5").Value = arrHeader End Sub
多行多列区域的错误尝试
当尝试填充多行多列区域(如A1:C3)时,若仍用Array()创建一维数组赋值,会出现不符合预期的结果:
Sub testArrayTwo() Dim arrHeader As Variant arrHeader = Array("1", "2", "3", "4", _ "5", "6", "7", "8", "9") Sheets(2).Range("A1:C3").Value = arrHeader End Sub
实际运行结果:仅数组前3个值填充第一行,后续行重复第一行内容,无法实现A1为1、C3为9的预期效果。
正确实现方案
要正确填充多行多列区域,需要创建与目标区域维度匹配的二维数组,可通过[{行1元素;行2元素;...}]的写法直接构造二维数组,示例代码如下:
Sub testArrayThree() Dim arrHeader As Variant arrHeader = [{1, 2, 3; 4, 5, 6; 7, 8, 9}] Sheets(2).Range("A1:C3").Value = arrHeader End Sub
核心逻辑说明
Array()函数创建的是一维数组,VBA默认将一维数组对应为一行单元格,赋值给多行区域时会自动重复填充每一行。- 多行多列的单元格区域需要匹配二维数组,
[{...}]写法中,分号;用于分隔行,逗号,用于分隔列,直接生成与目标区域维度一致的二维数组,因此能精准填充对应单元格。
内容的提问来源于stack exchange,提问作者Alice. M.
相关产品推荐
相关产品推荐

