|
本帖最后由 qqaa266 于 2012-12-24 14:44 编辑
arr1 = Range([b2], Cells(Rows.Count, 2).End(xlUp))这行代码中
[b2]表示B2这个单元格对象,用在这行中就表示B2这个单元格的值,
Cells(Rows.Count, 2).End(xlUp)中Rows.Count 表示某个工作表中所有行的数量,在excel2003中就是65536,所以Cells(Rows.Count, 2)就表示第65536行与第2列交叉的位置(也就是第2列最后一个单元格);
Cells(Rows.Count, 2).End(xlUp))就表示从第2列最后一个单元格开始往上查找第一个非空的单元格(往往就是你在第2列中所填写使用到的最后一个单元格),它也是一个单元格对象,但在你刚才那行代码中也表示这个单元各的值。
其实你刚才那行代码的真实面目应该是:arr1 = Range([b2].value, Cells(Rows.Count, 2).End(xlUp).value)平常我们都省略.value这个属性不写了;
如此一来运行时肯定出错:因为range用到两个参数时两个都必须是range对象;只用一个时则是表示range对象的字符;很显然刚才那两个单元格的值不可能是range对象的,所以会提示错误。
至于运算顺序,肯定是先算出那两个参数代表的range对象(至于先算谁,这个没深究过;不过好象也不影响我们使用);然后算出这两个range对象为对角线围成的区域(也是range 对象);最后得出这个区域的值。
|
评分
-
1
查看全部评分
-
|