首页 > 解决方案 > 从范围值VBA创建数组

问题描述

我正在尝试做一个宏,我需要一个值数组。这个数组是从一个大小可变的范围创建的。我已经尝试了以下方法,但一直出现错误:

Sub chase()


Dim rng As Range
Dim myarray() As Variant

last = Range("r1").End(xlDown).Address
MsgBox last

myarray = Range("r1:" & last).Value
For i = LBound(myarray) To UBound(myarray)
        msg = msg & myarray(i) & vbNewLine
    Next i
MsgBox "the values of my dynamic array are: " & vbNewLine & msg


End Sub

知道如何处理吗?

谢谢

标签: arraysexcelvba

解决方案


使用范围分配中的最后一个行号。

dim last as long

last = Range("r1").End(xlDown).row
myarray = Range("r1:r" & last).Value

您正在创建一个二维数组。尽管某些函数默认为第一级,但最好将二维数组视为二维数组。

For i = LBound(myarray, 1) To UBound(myarray, 1)
        msg = msg & myarray(i, 1) & vbNewLine
Next i

推荐阅读