找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 390|回复: 0

[分享] VBE二维数组的3种情况的使用

[复制链接]
发表于 2016-11-27 20:30:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在lisp中没有数组,在vbe中是新东西,三种情况下的使用,自己总结一下
  1. '3[功能] 二维数组赋值(直接赋值
  2. Sub aa()
  3. arr = [{1,2;3,4;5,6}]

  4. [a1].Resize(1, 2) = Application.Index(arr, 2, 0) '第二行,后面的0可以不要
  5. [a2].Resize(1, 2) = Application.Index(arr, 2) '=>(3,4)
  6. [a3].Resize(3, 1) = Application.Index(arr, 0, 1) '第一列,后面的0可以不要
  7. [b3].Resize(3, 1) = Application.Index(arr, , 1)

  8. brr = Application.Index(arr, 2, 0) '新数组
  9. [d1].Resize(1, 2) = brr

  10. Debug.Print LBound(arr) '=>1
  11. Debug.Print UBound(arr) '=>3
  12. Debug.Print UBound(brr) '=>2

  13. 'Debug.Print Row = UBound(brr) '第一维的上限 失败
  14. Row = UBound(brr)
  15. Debug.Print Row '=>2 成功

  16. Row = UBound(arr, 1) '=>3 第一维的上限
  17. col = UBound(arr, 2) '=>2 第二维的上限
  18. Debug.Print Row
  19. Debug.Print col

  20. End Sub

  21. '2[功能] 二维数组赋值Array
  22. Sub bb()
  23. a1 = Array(1, 2)
  24. a2 = Array(3, 4)
  25. arr = Array(a1, a2, Array(5, 6))
  26. Debug.Print LBound(arr) '=>0

  27. '[a1].Resize(1, 2) = Application.Index(arr, 2, 0) '第二行,后面的0可以不要 失败,因为arr是一维的,Arr(1)即可
  28. '[a2].Resize(1, 2) = Application.Index(arr, 2) '=>(3,4),同上
  29. '[a3].Resize(3, 1) = Application.Index(arr, 0, 1) '第一列,后面的0可以不要 失败
  30. '[b3].Resize(3, 1) = Application.Index(arr, , 1)'同上

  31. brr = arr(1) '新数组
  32. [d1].Resize(1, 2) = brr

  33. Debug.Print LBound(arr) '=>0
  34. Debug.Print UBound(arr) '=>2
  35. Debug.Print UBound(brr) '=>1

  36. 'Debug.Print Row = UBound(brr) '第一维的上限 失败
  37. Row = UBound(brr)
  38. Debug.Print Row '=>1 成功

  39. Row = UBound(arr, 1) '=>2 第一维的上限
  40. col = UBound(arr, 2) '=>2 第二维的上限 失败,因为arr是一维的
  41. Debug.Print Row

  42. End Sub

  43. '3[功能]最后一列=前面列相乘(选择单元格
  44. Sub cc()
  45. 'Dim rr As Range, i As Long
  46. 'i = 0
  47. With Selection
  48.     For Each rr In .Rows
  49.         i = i + 1
  50.         .Cells(i, .Cells.Columns.Count + 1) = WorksheetFunction.Product(rr)
  51.     Next
  52. End With
  53. End Sub

  54. '[功能]最后一行=前面行相乘
  55. Sub cc1()
  56. 'Dim rr As Range, i As Long
  57. 'i = 0
  58. With Selection
  59.     For Each rr In .Columns
  60.         i = i + 1
  61.         .Cells(.Cells.Rows.Count + 1, i) = WorksheetFunction.Product(rr)
  62.     Next
  63. End With
  64. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-28 02:52 , Processed in 0.332932 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表