Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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_Excel_Vba_Multidimensional Array_Populate - Fatal编程技术网

Arrays 填充二维数组,在多行上拆分代码

Arrays 填充二维数组,在多行上拆分代码,arrays,excel,vba,multidimensional-array,populate,Arrays,Excel,Vba,Multidimensional Array,Populate,我必须用8 x 5=40的值填充二维数组 下面的代码起作用 Sub ReadLabelPositions() Dim Arr_labelpositions()作为变量“数组8行+5列 '名称标签,顶部位置,左侧位置,顶部位置2,左侧位置2 Dim Int_计数器1,Int_计数器2为整数 '填充数组 Arr_labelpositions()=[{“lbl_N”,114222104212;“lbl_NO”,144144134154;“lbl_O”,210252210256;“lbl_ZO”,276

我必须用8 x 5=40的值填充二维数组

下面的代码起作用

Sub ReadLabelPositions()
Dim Arr_labelpositions()作为变量“数组8行+5列
'名称标签,顶部位置,左侧位置,顶部位置2,左侧位置2
Dim Int_计数器1,Int_计数器2为整数
'填充数组
Arr_labelpositions()=[{“lbl_N”,114222104212;“lbl_NO”,144144134154;“lbl_O”,210252210256;“lbl_ZO”,2762226232;“lbl_Z”,300144310144;“lbl_ZW”,276,54276,44;“lbl_W”,210,36210,26;“lbl_NW”,144,54144,44}]
'循环通过数组
对于Int_计数器1=1至UBound(Arr_标签位置,1)
对于Int_计数器2=1至UBound(Arr_标签位置,2)
调试。打印Arr_标签位置(Int_计数器1、Int_计数器2)
下一个Int_计数器2
下一个Int_计数器1
端接头
我想在将值分配给数组的位置拆分该行,因为该行太长

大概是这样的:

Arr_labelpositions() = [{"lbl_N",114, 222, 104, 212; _ <br>
                        "lbl_NO", 144, 144, 134, 154; _ <br>
                        "lbl_O", 210, 252, 210, 256; _  <br> etc...
Sub testSplitArrayBis()
  Dim Arr_labelpositions() As Variant, Int_Counter1 As Long, Int_Counter2 As Long
  Arr_labelpositions() = Array(Array("lbl_N", 114, 222, 104, 212), _
                Array("lbl_NO", 144, 144, 134, 154), _
                Array("lbl_O", 210, 252, 210, 256), _
                Array("lbl_ZO", 276, 222, 276, 232), _
                Array("lbl_Z", 300, 144, 310, 144), _
                Array("lbl_ZW", 276, 54, 276, 44), _
                Array("lbl_W", 210, 36, 210, 26), _
                Array("lbl_NW", 144, 54, 144, 44))
  'loop through array
  For Int_Counter1 = 0 To UBound(Arr_labelpositions)
        For Int_Counter2 = 0 To UBound(Arr_labelpositions(Int_Counter1))
            Debug.Print Arr_labelpositions(Int_Counter1)(Int_Counter2)
        Next Int_Counter2
    Next Int_Counter1
End Sub
Arr_labelpositions()
“lbl_编号”,144、144、134、154;u
“lbl_O”,210252210256;等等。。。
VBA不支持从静态值创建多个维度的数组。为实现您的目标,我建议使用集合和数组的组合。集合的每个项都将包含一个数组

Dim myCOlection as Collection
Set myCollection=New COllection
       
With myCollection

    .add Array("lbl_N",114, 222, 104, 212)
    .add Array("lbl_NO", 144, 144, 134, 154)
   ' etc etc.

End with
现在可以使用以下语法引用每个数组中的项

 ThisValue = myCollection(x)(y)
其中x是myCollection中的项(实际上是myCollection.item(x)),Y是数组中的索引

您可能还想看看是否使用脚本。字典而不是集合会给您带来任何好处。

恐怕您不能(以您尝试的方式)。您可以使用数组数组,以下一种方式构建,并按如下方式处理:

Arr_labelpositions() = [{"lbl_N",114, 222, 104, 212; _ <br>
                        "lbl_NO", 144, 144, 134, 154; _ <br>
                        "lbl_O", 210, 252, 210, 256; _  <br> etc...
Sub testSplitArrayBis()
  Dim Arr_labelpositions() As Variant, Int_Counter1 As Long, Int_Counter2 As Long
  Arr_labelpositions() = Array(Array("lbl_N", 114, 222, 104, 212), _
                Array("lbl_NO", 144, 144, 134, 154), _
                Array("lbl_O", 210, 252, 210, 256), _
                Array("lbl_ZO", 276, 222, 276, 232), _
                Array("lbl_Z", 300, 144, 310, 144), _
                Array("lbl_ZW", 276, 54, 276, 44), _
                Array("lbl_W", 210, 36, 210, 26), _
                Array("lbl_NW", 144, 54, 144, 44))
  'loop through array
  For Int_Counter1 = 0 To UBound(Arr_labelpositions)
        For Int_Counter2 = 0 To UBound(Arr_labelpositions(Int_Counter1))
            Debug.Print Arr_labelpositions(Int_Counter1)(Int_Counter2)
        Next Int_Counter2
    Next Int_Counter1
End Sub

这对您有用吗?“VBA不支持从静态值创建多个维度的数组”我相信@FaneDuru的答案演示了如何做到这一点。@RonRosenfeld FaneDuru演示了如何设置所谓的锯齿数组(数组数组数组),其中锯齿数组中的每个项都是使用(x)(y)语法访问的,而不是(x,y)语法..您不能使用数组函数和操作代码中所示的一组文字创建二维数组(在该数组中,您可以使用(x,y)访问项)。感谢您的澄清。