字典是VBA中经常使用的对象,有时需要将字典对象中保存数据转为数组,然后做进一步处理,在使用过程中经常会遇到数组下标越界之类的问题,下面就讲讲字典到数组的转换。
示例代码如下:

Sub Demo()Dim arr1, arr2, arr3Set objDic = CreateObject("Scripting.Dictionary")For i = 1 To 5objDic(i) = iNext iDebug.Print "> items直接赋值给数组:"arr1 = objDic.itemsCall GetArrBound(arr1)Debug.Print "> 数组第一次转置:"arr2 = Application.Transpose(arr1)Call GetArrBound(arr2)Debug.Print "> 数组第二次转置:"arr3 = Application.Transpose(arr2)Call GetArrBound(arr3)Set objDic = Nothing
End Sub
Sub GetArrBound(arr)Dim intArrDim As Integer, nintArrDim = fnGetArrayDimension(arr)Debug.Print ">>数组维度:" & intArrDimFor n = 1 To intArrDimDebug.Print ">>>第" & n & "维下界:" & LBound(arr, n) & ", 上界:" & UBound(arr, n)NextDebug.Print Application.Rept("=", 20)
End Sub
Function fnGetArrayDimension(arr) As IntegerDim tmp, iOn Error Resume NextFor i = 1 To 60Err.Cleartmp = UBound(arr, i)If Err.Number = 9 ThenfnGetArrayDimension = i - 1Exit FunctionEnd IfNext i
End Function

运行Demo过程立即窗口中的输出如下:

本地窗口中如下图所示。

【代码解析】
第3行代码声明创建一个字典对象。
第4~6行代码为字典对象赋值,共有5个元素。
第8行代码将自动对象的items集合赋值给arr1,有立即窗口中可以看到arr1是一维数组,其下标为0至4,对应立即窗口的输出如下。

> items直接赋值给数组:
>>数组维度:1
>>>第1维下界:0, 上界:4

第11行代码将数组进行一次转置,此时生成的数组arr2变为二维数组,对应立即窗口的输出如下。

> 数组第一次转置:
>>数组维度:2
>>>第1维下界:1, 上界:5
>>>第2维下界:1, 上界:1

第14行代码将数组再进行一次转置,此时生成的数组arr3为一维数组,对应立即窗口的输出如下。虽然经过两次转置,数组变回一维数组,但是数组的下届和上界都发生了变化,在代码中引用数组时需要注意下标的范围。

> 数组第二次转置:
>>数组维度:1
>>>第1维下界:1, 上界:5

第18~26行代码为GetArrBound过程用于获取并输出数组每个维度的上界和下届。
第18~26行代码为fnGetArrayDimension过程用于获取数组知维度数量,代码详细讲解参见《[如何获取数组的维数](https://blog.csdn.net/taller_2000/article/details/84868857)》

VBA字典数组转置维度变化相关推荐

  1. Excel VBA 字典/数组 示例

    A 将数组作为字典的ValuePrivate Sub CommandButton3_Click() Dim arr, arr1, i&, d As Object arr = Sheets(3) ...

  2. VBA 字典数组运用查询系统

    Sub find() '找 Set d = CreateObject("scripting.dictionary") With Sheets("data")   ...

  3. vba 将数组作为参数传递_将VBA数组写入工作表时转置(Transpose)的利用

    大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取.回填和 ...

  4. VBA 字典嵌套字典 + 数组

    VBA 字典嵌套字典 + 数组 功能展示为Excel VBA字典中嵌套字典,内层字典值为一个数组 Public Sub arrayInDictWithInDict()myarr = Array(&qu ...

  5. Xlookup函数、VBA字典和哈希数组“竞速“

    公司的报表用了很多vlookup函数,每次打开和编辑就跟蜗牛一样,极大影响效率.对此有一些不同的解决方案,比如设置公式手动刷新,用sql查找.vba编写函数查找等.这里我做了Xlookup函数.VBA ...

  6. access vba 常量数组赋值_VBA数组是什么?有何作用?别担心,你只需用1分钟就明白它是什么...

    Hello,大家好,在前面我们说过Excel函数中间的数组含义,那么你是否知道VBA中间的两个数据处理利器字典+数组呢?他们一旦结合起来将会发挥无可估量的作用,提升执行效率就在分秒之间.今天我们先说说 ...

  7. pq 中m函数判断嵌套_Python中numpy的布尔判断、切片、维度变化、合并、通用函数...

    关注微xin公共hao:小程在线 import numpy as np ###################################数据的布尔值判断###发财中国年########## x= ...

  8. VBA关于数组Dim,ReDim Preserve运行速度对比思考

    VBA关于数组Dim,ReDim Preserve运行速度对比思考 如何插入一段漂亮的代码片 以前看教程经常有人说ReDim Preserve动态定义数组运行速度非常慢,特做测试分析是否真的想网友说的 ...

  9. 【原创】VBA学习笔记(12)VBA的数组 array---基础知识(1)

    一 数组 array 1.1 什么是数组?具体的例子 以这个语句为例子 arr1=array(1, 2, 3) 左边:变量名=数组名 右边:数组,集合,多个元素集合,多个数据集合, 右边的单个内容,1 ...

  10. python numpy array转置_详解Numpy数组转置的三种方法T、transpose、swapaxes

    Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环. 1.首先数组转置(T) 创建二维数组data如下: 进行矩阵运算时 ...

最新文章

  1. 深入理解网络最大流和Ford-Fulkson算法
  2. Windows原生运行Linux的技术细节
  3. idea将项目打成jar包
  4. vmware占用c盘空间_W7 64位装系统,硬盘全部都格式化和分区了,系统装上后C盘占了40G,这是怎么回事?...
  5. Nginx+tomcat配置集群
  6. phpcmsV9中的CSS_PATH是如何定义的
  7. 项目管理工具project软件学习(一) - 项目信息设置
  8. 学会这2招,不用设计师,一样能做出精美炫酷的可视化大屏模板
  9. 机器学习基石12-Nonlinear Transformation
  10. 网管怎么么叫好听_找了三天三夜,这24首歌,太好听了,一定要送给你!谢谢最亲爱的你,梦中想着你,死心塌地去爱你...
  11. 我的3D虚拟旅游公司的假想
  12. 训练过程出现trian_dice一直大于1(mask范围0-255转为0-1)
  13. uni-app小程序分享
  14. 计算机基础——计算机网络
  15. python字典求平均值_Python
  16. 管道仪表流程图中常用的字母及其含义
  17. [ERROR] Slave I/O: error connecting to master
  18. Wordpress采集支持中英Wordpress采集
  19. 常用的http响应状态码大全
  20. Incomplete reply from server

热门文章

  1. 通俗易懂专利分类、专利申请流程
  2. 怎么根据分隔符号将Excel数据换行复制
  3. c语言汉字utf8,C语言汉字gbk转utf-8
  4. AI换脸,流行一阵儿了;其中原理你一定也明白!
  5. eventFilter能进入dragEnter但没有event::drog
  6. CAJ格式文件怎么转换为PDF格式
  7. 强化学习7——梯度及梯度下降法
  8. 重要发布全总结丨一文看懂阿里云弹性计算年度峰会
  9. Java基础----交通工具的继承写法(面向对象的三大特征)
  10. hack the box(5985 WinRM)