Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 数组程序中的语法错误_Arrays_Vba_Excel_Loops - Fatal编程技术网

Arrays 数组程序中的语法错误

Arrays 数组程序中的语法错误,arrays,vba,excel,loops,Arrays,Vba,Excel,Loops,我正在尝试使用数组方法编写从一个位置到另一个位置的工作表数据范围,以便稍后尝试数组操作。这个程序运行良好 Sub Array2Range5() Dim Directory As Variant Directory = Range("A30:D39").Value2 For i = LBound(Directory, 1) To UBound(Directory, 1) For j = LBound(Directory, 2) To UBound(Direc

我正在尝试使用数组方法编写从一个位置到另一个位置的工作表数据范围,以便稍后尝试数组操作。这个程序运行良好

  Sub Array2Range5()

    Dim Directory As Variant
    Directory = Range("A30:D39").Value2

    For i = LBound(Directory, 1) To UBound(Directory, 1)
    For j = LBound(Directory, 2) To UBound(Directory, 2)
        Worksheets("List").Range(Worksheets("List").Cells(i + 1, j + 1), Worksheets("List").Cells(i + 1, j + 1)) = Directory(i, j)
    Next j
    Next i
End Sub
出于相同目的,以下程序给出了运行时错误“9”。以下代码部分中的下标超出范围

           Worksheets("List").Range(Worksheets("List").Cells(i + 1, j + 1), Worksheets("List").Cells(i + 1, j + 1)) = Directory(i, j)
我无法更正它,程序如下

 Sub Array2Range6()

    Dim Directory As Variant
    Directory = Range("A30:D39").Value2

    For i = 0 To UBound(Directory, 1)
    For j = 0 To UBound(Directory, 2)
        Worksheets("List").Range(Worksheets("List").Cells(i + 1, j + 1), Worksheets("List").Cells(i + 1, j + 1)) = Directory(i, j)
    Next j
    Next i
  End Sub
我的问题是这些行的语法是否错误。如果是这样,在类似的行中正确的语法应该是什么

    For i = 0 To UBound(Directory, 1)
    For j = 0 To UBound(Directory, 2)

非常感谢您的帮助。

将工作表范围中的值转储到数组中始终会生成基于1的二维数组,而不是基于零的一维或二维数组

用以下内容证明这一点:

Dim Directory As Variant
Directory = Range("A30:D39").Value2

debug.print LBound(Directory, 1) & " to " & UBound(Directory, 1)
debug.print LBound(Directory, 2) & " to " & UBound(Directory, 2)
第一个有效,因为您正在使用LBound;后者失败,因为您将LBound指定为零,而实际为1

就我个人而言,无论数组是基于零的一维数组、基于一的一维数组(使用指令)还是基于一的二维数组,我总是使用LBound作为下边界