使用VBA在Excel列表框中显示选择范围值



我尝试在Excel 2016中将不连续的行单元格范围显示在2列列表框中,但没有成功。我使用的最新建议是将范围值移动到数组中,然后使用该数组写入列表框。
我使用 FindAll 函数搜索较大的名称范围,以提取满足字符串条件的行。 我最终得到一个 28 行 x 4 列的非连续范围(例如:A3:D3、A7:D7、A15:D15、A25:D25 等(。

我的问题在第二个循环周期的顶部:

Dim result As Range, item As Range
Dim Arr() As String, sStr As String
sStr = "A3:D3","A7:D7","A15:D15","A25:D25"
Set result = Range(sStr)
i = 0
For Each item In result
ReDim Preserve Arr(i+1, 4)
Arr(i , 1) = item(1, 1).Value
Arr(i , 2) = item(1, 2).Value
Arr(i , 3) = item(1, 3).Value
Arr(i , 4) = item(1, 4).Value
i = i + 1
Next

第一个循环交互使用从项目 -> Arr 传递的正确值,但在第二个循环中一切都出错了。 查看监视列表,item.values 不正确,并在 ReDim 语句处循环炸弹,运行时错误"9":下标超出范围。 它必须是范围索引和/或 ReDim 语句。

这对你有用吗?

Dim result As Range, item As Range
Dim Arr() As String, sStr As String
sStr = "A3:D3,A7:D7,A15:D15,A25:D25"
Set result = Range(sStr)
ReDim Arr(result.Areas.Count, 4)
i = 0
For Each item In result.Areas
Arr(i, 1) = item(1, 1).Value
Arr(i, 2) = item(1, 2).Value
Arr(i, 3) = item(1, 3).Value
Arr(i, 4) = item(1, 4).Value
i = i + 1
Next

最新更新