词典是VBA中的常用对象,可能需要将存储在词典对象中的数据转换为数组,然后进行进一步处理。 使用中经常出现数组下标越界等问题。 介绍词典到数组的转换。
示例代码如下:
subdemo(dimarr1、arr2、arr3setobjdic=createobject (scripting.dictionary ) ) For i=1 To 5 objDic(i ) ) ) )=i Next i Debug.Print ' items直接分配给数组。' arr1=objdic.itemscallgetarrbound (arr1) Debug.Print '数组的首次旋转位置: ' arr2=applicatation callgetarrbound (arr2) debug . setobjdic=nothingendsubsubgetarrbound (arr ) Dim intArrDim As Integer, nintarrdim=fngetarraydimension (arr ) Debug.Print '数组维: ' intarrdimforn=1tointarrdimdebug.print ' n '维下界:上界n ) next debug.print application.rept ) '=,20 ) endsubfunctionfngetARRaydimension ) arr ) asinction ionerrorresumenextfon
本地窗口包含以下图形:
【代码分析】
第三行代码声明创建词典对象。
第4-6行代码为词典对象赋值,共有五个元素。
第8行代码将自动对象的items集合代入arr1,在有即时窗口的情况下发现arr1是一维数组,其下标从0到4。 与即时窗口相对应的输出如下。
items直接赋值给数组。 数组维:1第一维下界:0,上界:4第11行代码将数组旋转一周。 此时生成的数组arr2为二维数组,对应即时窗口的输出如下所示。
数组第一次倒排:数组维:2第一维下界:1、上界:5第二维下界:1、上界:1第十四行代码将数组再次倒排。 此时生成的阵列arr3是一维阵列,并且对应于即时窗口的输出。 经过两次倒排后,数组返回一维数组,但数组的下一期和上界发生了变化,在代码中引用数组时必须注意下标范围。
数组的第二次倒排:数组维:1第一维下界:1,上界:5第18~26行代码用于GetArrBound过程中获取和输出数组各维的上界和下一期。
第18至26行代码是fnGetArrayDimension进程,用于获取数组中的维数。 有关代码的详细信息,请参阅《[如何获取数组的维数](https://blog.csdn.net/taller_2000/article/details/84868857)》。