excel - 将范围转换为数组
问题描述
我知道很多关于这个主题的线程已经存在,但我仍然找不到在这种情况下有效的解决方案。以下两个潜艇不断给我一个“下标超出范围”错误。
Sub test1()
Dim Arr() As Variant
Arr= Range("A1:A10")
MsgBox Arr(0)
End Sub
Sub test1()
Dim Arr As Variant
Arr= Range("A1:A10").Value
MsgBox Arr(0)
End Sub
解决方案
为清楚起见,根据以下评论进行编辑。
将范围的值分配给 Variant 变量将导致变量包含按行和列(按此顺序)索引的基于 1 的 Variants 二维数组,或者如果它是 1 单元格范围,则包含范围的实际值。
在您的特定情况下,这将起作用:
Sub test1()
Dim Arr As Variant
Dim row As Long
Dim col As Long
row = 1
col = 1
Arr = Range("A1:A10").Value
MsgBox Arr(row, col)
End Sub
在更一般的方法中,如果您的下游代码希望处理一个数组,但您的范围有可能覆盖单个单元格,即使在这种情况下,您也可以强制使用数组,沿着这些思路:
Sub test2()
Dim rng As Range
Dim Arr As Variant
Dim row As Integer
Dim col As Integer
row = 1
col = 1
Set rng = Range("A1:A1") '<== 1 cell only!
Arr = rng.Value
'Ensure we're dealing with an array even in this case.
If Not IsArray(Arr) Then
ReDim Arr(1 To 1, 1 To 1) As Variant
Arr(1, 1) = rng.Value
End If
MsgBox Arr(row, col)
End Sub
推荐阅读
- python - Pandas 数据框列:用数字替换字符串值时出错
- python - Python - 单击以使用 Selenium 滚动到底部
- python-3.x - 如何在 Python 中提示 self 变量的类型
- java - 如何在spring中创建postmapping方法,让客户端只需要输入部分对象而不是完整对象?
- feathersjs - 有没有办法访问服务中的标头和 cookie?
- regex - Scala 正则表达式模式匹配字符串插值
- javascript - Mobile Safari 中 Javascript 中的麦克风访问
- node.js - socket.io 连接的奇怪事件
- python - 向 Bokeh DataTable 添加工具提示
- php - 具有更新查询的多种无线电类型