Arrays 错误9“;下标超出范围“;尝试访问变量数组的元素
我试图访问通过范围创建的数组的元素,但由于某种原因,我得到了一个超出范围的值错误Arrays 错误9“;下标超出范围“;尝试访问变量数组的元素,arrays,excel,vba,Arrays,Excel,Vba,我试图访问通过范围创建的数组的元素,但由于某种原因,我得到了一个超出范围的值错误 Sub Macro1() Dim xRng As Range Dim x() As Variant Set xRng = Range("B2:B12") x() = xRng.Value MsgBox ("x = " <> CStr(x(3))) End Sub Su
Sub Macro1()
Dim xRng As Range
Dim x() As Variant
Set xRng = Range("B2:B12")
x() = xRng.Value
MsgBox ("x = " <> CStr(x(3)))
End Sub
Sub宏1()
Dim xRng As范围
Dim x()作为变量
设置xRng=范围(“B2:B12”)
x()=xRng.Value
MsgBox(“x=”CStr(x(3)))
端接头
您缺少x(3)
中的第二个标记。试试x(3,1)
。变量是由(行、列)寻址的二维变量数组
编辑要将您的数组降低到排名1,您必须遵循以下原则:
Sub Macro1()
Dim xRng As Range
Dim x2D As Variant
Dim x1D As Variant
Dim l As Long
Set xRng = Range("B2:B12")
x2D = xRng.Value
ReDim x1D(LBound(x2D, 1) To UBound(x2D, 1))
For l = LBound(x1D) To UBound(x1D)
x1D(l) = x2D(l, 1)
Next
MsgBox ("x = " <> CStr(x1D(3)))
End Sub
Sub宏1()
Dim xRng As范围
Dim x2D作为变型
Dim x1D作为变型
我和你一样长
设置xRng=范围(“B2:B12”)
x2D=xRng.值
重拨x1D(LBound(x2D,1)到UBound(x2D,1))
对于l=LBound(x1D)到UBound(x1D)
x1D(l)=x2D(l,1)
下一个
MsgBox(“x=”CStr(x1D(3)))
端接头
您缺少x(3)
中的第二个标记。试试x(3,1)
。变量是由(行、列)寻址的二维变量数组
编辑要将您的数组降低到排名1,您必须遵循以下原则:
Sub Macro1()
Dim xRng As Range
Dim x2D As Variant
Dim x1D As Variant
Dim l As Long
Set xRng = Range("B2:B12")
x2D = xRng.Value
ReDim x1D(LBound(x2D, 1) To UBound(x2D, 1))
For l = LBound(x1D) To UBound(x1D)
x1D(l) = x2D(l, 1)
Next
MsgBox ("x = " <> CStr(x1D(3)))
End Sub
Sub宏1()
Dim xRng As范围
Dim x2D作为变型
Dim x1D作为变型
我和你一样长
设置xRng=范围(“B2:B12”)
x2D=xRng.值
重拨x1D(LBound(x2D,1)到UBound(x2D,1))
对于l=LBound(x1D)到UBound(x1D)
x1D(l)=x2D(l,1)
下一个
MsgBox(“x=”CStr(x1D(3)))
端接头
必须转置Some1ColumnDrange中生成的2D数组。要获得1D数组,值为:
Sub Macro1()
Dim xRng As Range
Dim x As Variant
Set xRng = Range("B2:B12")
x = Application.Transpose(xRng.Value) ' this way you get a 1D array
MsgBox ("x = " <> CStr(x(3)))
End Sub
Sub宏1()
Dim xRng As范围
Dim x作为变体
设置xRng=范围(“B2:B12”)
x=Application.Transpose(xRng.Value)'这样就得到了1D数组
MsgBox(“x=”CStr(x(3)))
端接头
必须转置Some1ColumnDrange中生成的2D数组。要获得1D数组,值为:
Sub Macro1()
Dim xRng As Range
Dim x As Variant
Set xRng = Range("B2:B12")
x = Application.Transpose(xRng.Value) ' this way you get a 1D array
MsgBox ("x = " <> CStr(x(3)))
End Sub
Sub宏1()
Dim xRng As范围
Dim x作为变体
设置xRng=范围(“B2:B12”)
x=Application.Transpose(xRng.Value)'这样就得到了1D数组
MsgBox(“x=”CStr(x(3)))
端接头
谢谢,有什么方法可以将x降到秩1?另请参见单细胞范围的特定情况。谢谢,有什么方法可以将x降到秩1?另请参见单细胞范围的特定情况。啊!我总是忘记这个把戏。向上投票。请注意,在指定给x时,必须删除括号。吹毛求疵:你在评论前面的单撇号不是Excel期望的字符。@Excelosaurus,谢谢你的撇号niptick:我当时在手机旁,我不能有正确的引号或单撇号!我总是忘记这个把戏。向上投票。请注意,在指定给x时,必须删除括号。吹毛求疵:你在评论前面的单撇号不是Excel期望的字符。@Excelosaurus,谢谢你的撇号niptick:我当时在手机旁,我不能有正确的引号或单撇号