Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 错误9“;下标超出范围“;尝试访问变量数组的元素_Arrays_Excel_Vba - Fatal编程技术网

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:我当时在手机旁,我不能有正确的引号或单撇号