将上边界传递给数组

时间:2018-03-20 15:36:53

标签: excel vba excel-vba

我希望我的宏从另一张表上的电话号码列表中读取,计算行数,然后从A1中构建一个数组:从行计数中...。该数组将始终从A1开始。

this.DATAGRID.CellFormatting += DATAGRID_CellFormatting;

我无法将上边界(lrow)传递给PhonesArray。

它应该以

运行
Dim lrow As Variant 

lrow = Cells(Rows.Count, 1).End(xlUp).Row

Dim PhonesArray as Variant

PhonesArray = " [A1:A" & lrow & "].Value2

lrow变量正在计算,但是我无法将其传递给数组构造。静态范围按预期工作。如果此问题已得到解决,我们非常感谢您提供任何帮助并提前道歉。我无法通过搜索找到解决方案。

3 个答案:

答案 0 :(得分:6)

一般来说,使用[A1]类型的速记来引用您的单元格并不是一个坏主意,并且它不支持将它们放在一个像这样的字符串中。请改用Range(),您可以选择以下几种方法:

  • Range("A1:A" & lRow)
  • Range("A1").Resize(lrow,1)

根据您提供的代码,我删除lrow变量并使用此代码:

Dim PhonesArray As Variant

With ThisWorkbook.Worksheets("Sheet1")
    PhonesArray = Range(.Range("A1"), .Cells(.Rows.Count, 1).End(xlUp)).Value2
End With

答案 1 :(得分:4)

您需要Range("a1:a" & lRow).value2我相信

答案 2 :(得分:1)

我通常更喜欢引用父工作表并使用单元格定义范围的开始和结束。

Dim lrow As long, phonesArray as variant

with worksheets("your_worksheet's_name")
    lrow = .cells(.rows.Count, 1).End(xlUp).Row
    phonesArray = .range(.cells(1, "A"), .cells(lrow, "A")).Value2
    debug.print lbound(phonesArray, 1) & " to " & ubound(phonesArray, 1)
    debug.print lbound(phonesArray, 2) & " to " & ubound(phonesArray, 2)
end with