1.3.1 Cells——代码与表格之间的第一个桥梁
想在VBA程序中读取或修改单元格的内容,就必须知道怎样使用VBA代码表示一个单元格。熟悉Excell公式的读者都知道,在表格公式中我们可以直接用单元格的地址(如C2)代表一个单元格的内容。但是VBA程序并不支持这种表示方法,而是提供了若干种方法在代码中表示Excell单元格,Cellllss属性就是其中之一(关于“属性”的概念,本书后面讲解Excell对象体系时会详细介绍)。
Cells属性的写法很容易理解:用两个数字分别表示该单元格所在的行号和列号,对应关系如图1.13所示。需要特别注意的是:这两个数字必须使用逗号(如前所述,必须使用半角符号,下同)隔开,并用一对圆括号将它们括起来,紧随在“Cells”的后面。
图1.13 使用Cells属性表示单元格
这种用括号把若干个数值包含起来的写法,在 VBA 程序中十分常见。一般情况下,括号中用逗号隔开的每个数值称作一个“参数”。在上面的例子中,我们可以说“Cells 属性需要指定两个参数,第一个参数代表行号,第二个参数代表列号”。关于参数的更多知识,在讲解子过程与函数时会深入介绍。
熟悉表格公式的读者,可能对这种完全使用数字表示单元格的方式有些不习惯。其实Cells的第二个参数也可以使用字母表示,比如上例也可以写成 Cells(2 ,“C”)=5,同样能够将C2单元格的内容设置为5(注意字母两边必须有双引号)。不过在实际开发中,使用数字定位单元格会更便利,因为数字通过简单的计算就可以得到,便于批量处理或快速定位。读者可以比较一下,“将C5单元格右边第47列涂成红色”与“将第5行第3列单元格右边第47列涂成红色”,哪一个处理起来更加简单。显然,第二种方法只要计算一下“3+47”,就能知道只需将 Cells(5 ,50)设置为红色即可。而使用第一种方法,则需要想办法计算出字母 C 后面第47列的名称——AX,才能处理这个单元格,过程相对复杂许多。
Cells属性如同一个连接VBA代码与Excel表格的桥梁,使我们能够用VBA表示任何一个单元格,接下来的问题就是怎样修改单元格中的内容。