vba中生成数组的[ ]与array 转
看一贴中问[ ]与array,在此简说下:
一、array
是返回一个一维数组,其最小下标受Option Base vba 字符串转数组语句指定的下界的决定是0还是1(但vba.array不受此限定)示例:
a =Array(1, 2, 3, 4) '在Option Base 0或默认情况下,a是个最小下标为0的一维数组
a =Array(1, 2, 3, 4) '在Option Base 1情况下,a是个最小下标为1的一维数组
a =vba.Array(1, 2, 3, 4) '不管Option Base指定的是什么,a都是个最小下标为0的一维数组
如果要用array返回一个二维数组,得先生成一个数组元素为数组的一维数组然后再转一转,如:
a = Application.Transpose(Array(Array(1, 2), Array(3, 4))) 'a是一个二维数组,但注意他的元素顺序
其中Array(Array(1, 2), Array(3, 4))产生的就是一个数组元素为数组的一维数组
二、[ ]
功能与evaluate差不多(evaluate可以用变量,而[ ]不能)。他也可以返回数组,但与array不同的是:最小下标不受Option Base 语句指定的下界的决定,都是1;不但可以返回一维数组也可以返回二维数组。如下示例:
a = [{1,2,3,4}] 'a是一个最小下标为1的一维数组
a = [{1,2;3,4}] 'a是一个二维数组,是不是比array要方便一些?但注意其元素的顺序与前面的不同哈
同时,他还可以进行些计算,如
a = [{1,2;3,4}+5] '可以这样,可以去看看结果中各元素是怎样的
a = [{1,2;3,4}&"可以"] '这样也行
a = [{1,2;3,4}&{"a","b";"c","d"}] '同样这样还是可以
这是不是就是与单元格中输入公式并选中一些地方后按F9所看到的差不多?
它除了与数组而外,还有:
MsgBox [sum(a1:b4)] '假设当前表的a1:b4中为数字,这样就求和了
与
MsgBox Evaluate("sum(a1:b4)")、MsgBox WorksheetFunction.Sum(Range("a1:b4"))
功能都是一样的,只是写起来是不是简单多了?但快不快就不晓得哈
总之,就一句话:在单元格中可以怎样整的在VBA中就用[ ]怎样整就成了但此贴不是鼓吹使用[ ]而不用array哈,各有千秋嘛。哈哈
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论