看一贴中问[ ]与array,在此简说下: 一、array 是返回一个一维数组,其最小下标受Option Base 语句指定的下界的决定是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哈,各有千秋嘛。哈哈 |
|