EXCEL用VBA将单元格数值存入数组

知道A列有10个数可以用下面存入数组,如果不知道A列有几个数怎么办?

Sub test()
Dim a(9) As Integer, i As Integer
For i = 1 To 10
a(i - 1) = Range("A" & i)
Next
End Sub

1、首先打开一个Excel的文件,在表格中输入简单的表格,比如学生身高表格,如下图所示。

2、接着,在表格中输入一维数组的说明文字,鼠标左键单击【开发工具】菜单标签,在VBA控件下拉菜单中,并选择按钮控件,如下图所示。

3、 然后,在表格中绘制出按钮控件,并修改控件名称,比如使用一维数组的名称,如下图所示。

4、接着,选择按钮控件,并鼠标左键单击【查看代码】按钮,如下图所示。

5、然后,在代码窗口中输入VBA语句,比如输入定义一维数组的语句,并给一维数组赋值,如下图所示。

6、接着,在代码窗口中,输入一维数组给单元格赋值的VBA语句,如下图所示。

7、最后,在设计窗口上,鼠标左键单击按钮,可以看到表格中的,通过VBA程序的一维数组,并输出到身高的单元格中,显示出数据了,如下图所示。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-12

使用Redim动态数组即可。

Sub test1()
    Dim a() As Integer, iRow As Long, i As Integer
    iRow = Cells(Rows.Count, 1).End(xlUp).Row
    ReDim a(iRow - 1)
    For i = 1 To UBound(a)
        a(i - 1) = Range("A" & i)
    Next
End Sub

追问

还是你最明白

本回答被提问者采纳
第2个回答  2019-11-08
使用worksheetfunction直接实现。
Dim arr
arr = WorksheetFunction.Transpose(Range("a2:b14"))
‘arr就是一个二维数组arr(1 to 2, 1 to 13)
msgbox arr(2,1)
第3个回答  2015-05-20
FOR I=1 TO RANGE("a65536").END(XLUP).ROW-x
x表示A列起始数据单元格的行号-1追问

写完整吧,不懂

追答

假如数据从A3开始,

Sub test()
Dim a()
a() = Range("A3:A" & Range("A65536").End(xlUp).Row)
End Sub

追问

你的也没有错,但不过啊

第4个回答  推荐于2017-10-07
代码及注释如下:
Sub main()
x = Range("A65536").End(3).Row'x的值为A列中最后一个非空单元格行号
ReDim a(x)'重新定义数组a,使之上限为x
For i = 1 To x‘i从A1依次往下循环,直到最后一行
a(i - 1) = Range("A" & i)'将A列单元格值依次存放于数组中
Next
End Sub