iamlaosong文
1、对单元格进行处理的时候往往会用cells(row,col)进行引用,如cells(1,3)表示C1单元格(1行3列),当用户用字母(列名)指定列的时候,我们首先将字母转换成数字列号,如C列用Asc(UCase("c")) - 64转换为3,然后再进行引用。现在又发现另一个写法,就是列可以直接用字母或者内容为字母的变量表示,这样就不需要将字母转换成数字了。如:
MsgBox Cells(16, "b")
MsgBox Cells(16, "ab")
cc = "c"
MsgBox Cells(16, cc)
Cells属性的严格用法是 Cells.Item( row, column ) ,不过由于Item 是一个默认属性,所以可以不写,因此我们平时直接简化写作 Cells ( row, column ) 的形式。其中,第一个参数 row 必须是数字,而第二个参数 column 则可以是数字,也可以直接写成列名。
Cells可以看作是Range对象的一个子集,Cells(1,1)相当于Range("A1"),同样一个Range也有很多种写法,如下面这些代码效果都是一样的:
Range(Cells(1, 1), Cells(10, 5)).Select
Range(Cells(1,"A"), Cells(10, "E")).Select
Range(Range("A1"), Range("E10")).Select
Range(Range("A1").Address, Range("E10").Address).Select
Range([A1], [E10]).Select
Range("A1", "E10").Select
Range("$A$1", "$E$10").Select
Range("A1:E10").Select
2、如果以一个单元格为起点,引用一个区域,例如引用以Cells(i,j)开始m行n列,对于数字列号很简单,只需将数字相加即可,即:
Range(Cells(i, j), Cells(i+m, j+n)).Select
如果字母为列号,就不能用上面的方法。Excel提供了一个offset属性,这个属性就是偏移量。用这个可以达到同样的目的,即:
Range(Cells(i, pmCol1), Cells(i, pmCol1).Offset(m, n)).Select
上面变量pmCol1的内容是一个数字列号或者字母列号。