VBA for Excel(四)
本文涉及到的问题
- 用VBA填写公式
- 多方法的区域选择
- 单元格对象常用的方法属性
区域的选择
range("a1")
表达的是当前工作簿当前表的a1
单元格是最常用的形式。注意一切没指定从属对象的对象都使用默认对象,range("a1")
其实就是一种简写,它等价于ActiveWorkbook.ActiveSheet.Range ("a1")
,当你跨表时一定要指明表,跨文件时一定要指定工作簿,本篇专注讲Range不会跨表,但读者心中应该注意这一点。
同样是A1单元格还可以有其他表达方法
cells(1,1)
[A1]
表达各有优略,cells(1,1)
它跟range差不多但它行列都是数字便于对列进行操作,[A1]
表达简洁易懂,但是他慢,它其实是Evaluate(“a1”)的简写,解释器需要把它转换成range(“a1”)然后用,相当于拐了一道弯,官方不推荐说他影响可读性且影响效率。但我是推荐的,首先一般人不会去吧range放循环里的,太慢了一般用数组或字典,而且影响可读性吗?当然前期你不要这么用因为他没自动补齐。不利于你学精这门东西,熟练之后可以。觉得复杂的话其他表达可以不管Range一定要会。
连续多个单元格的情况
range("A1:B2")
range("A1:B" & "5") '本质上里面是字符串,你可以用变量去替换任何一个字母数字
range(range("A1"),range("B2")) '这种形式是依靠两个单元格去定位区域比较常用
range(cells(1,1),cells(3,5))
[A1:D2]
columns(1) '第一列
Rows(1) '第一行
不连续多个单元格的情况
range("A1,B2")
range("A1:B2,D2:E5")
[A1,B2]
区域的交并
并
其实前面选取不连续单元格就是一种并,这是另一种形式,它的优势是你可以不用知道具体区域的名称,比如我想合并Selection第1列,第5行和第2列,第2行。我不知道它是那一个单元格这时就能用Union,你可能会说range(selectionse.cells(5,1),selectionse.cells(2,2))不就求出来了,别杠好吧。那我让你求所选区域有值的部分与A1的并呢。