我希望我的宏从另一张表上的电话号码列表中读取,计算行数,然后从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变量正在计算,但是我无法将其传递给数组构造。静态范围按预期工作。如果此问题已得到解决,我们非常感谢您提供任何帮助并提前道歉。我无法通过搜索找到解决方案。
答案 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