excel - 使用 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
第一个循环交互使用从 item -> 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
推荐阅读
- javascript - 进入循环时解析 Int 不执行
- c++ - 如何使对象相互通信?
- ruby - 为什么 Valgrind memcheck 在我的 Ruby 程序上运行多次?
- javascript - 防止 IE11 中的默认事件
- ios - TextInput中的文本在ios上的位置不正确
- javascript - Angular mat-icon 不使用蒙版渲染 svg
- javascript - 使用错误密钥的 AES 解密。如何隐藏密钥错误的事实?
- homebrew - 如何防止 Homebrew 安装某个公式依赖项?
- batch-file - 检查目录是否正在 Windows 10 资源管理器中打开
- php - Visual Studio Code 和 PHP:在 Echo 语句中转义引号