VBA学习(单元格对象操作)

前面讲完了EXCEL工作簿和工作表常见操作对应的VBA代码,今天这篇主要讲解的内容是单元格的操作所对应的VBA代码,也是学习VBA的重头戏内容。
因为无论是在工作表中编辑数据,还是从工作表中读取数据,归根结底,是需要对单元格进行操作,因为所有的数据都是写在一个个单元格里面的。
以下分为三个大的部分进行讲解:

1、单元格的常见表示方式

1
2
3
[A1]
Range("A1")
Cells(1,1)

是的,你没看错,上面的3种方式指代的都是单元格A1,就是工作表左上角的那个。这和咱们手动操作不同,如果直接选中A1单元格,看到的就是A1。
至于为什么会有这么多表示方式,VBA自有它的妙用,在这里,只需了解一下,混个眼熟,待咱们把另外2个部分的知识学完,最后再实操一下,进一步理解并体会这么多表示方式的好处。

2、单元格对象常用方法

1
2
3
4
5
Select(选中)
Delete(删除)
Copy(复制)
ClearContents(清空)
AutoFilter(自动筛选)

3、单元格对象常用属性

1
2
3
4
Value(值) Text(文本内容)
Row(行号) Column(列号)
Offset (偏移)
Entire row (整行)

前面打过比方,如果把“人”看作一个对象的话,那么人所具备的属性是:有鼻有眼有手有脚…人具备的方法是:吃饭、走路、睡觉…。
所以可以发现,属性基本是名词,是用来描述对象特征的;而方法则基本是动词,是用来说明对象能干哪些事。
上述2、3、中的单元格的常用方法和属性,也是同样道理。
VBA是面向对象的编程,无论是工作簿、工作表还是单元格,使用它们的属性或方法时,语句结构都是一样的:对象.属性对象.方法。比如:
Range("A1").Select是选中A1单元格;
Range("A1").ClearContents是清空A1单元格中的内容;
Range("A1").Entire row.Delete是将A1单元格所在的整行删除;
Sheets(1).Range("A1").Offset(2, 3) = "hello"是将当前工作簿中第1个工作表中的A1单元格往右偏移2行至第3行,往左偏移3列至第4行,也就是在D3单元格中填入“hello”。其中Offset(2, 3)中的2指的是行号(Row),3指的是列号(Column)。
Range("A1").Value是指A1单元格的值;而Range("A1").Text则是当A1单元格设置为常规格式时,它里面的文本内容。可以用Msgbox Range("A1").ValueMsgbox Range("A1").Text打印一下,看看有何不同。

这么描述,可能不是很直观,你可以动手试试,运行一下,看看效果。
至于单元格自动筛选的操作AutoFilter,可以结合《VBA常用代码(表格拆分&筛选)》这篇文章,理解理解。