一、概念
1.1对象:和相亲对象的“对象”一样的概念,你相亲的对象是高富帅还是白富美?
1.2属性:相亲对象的属性--是男的还是女的?高吗?帅吗?白吗?心灵美吗?
1.3方法:相到意中人(男追女),送鲜花,送戒指,送衣服,送包包....种种方法只为搞掂她。
1.4事件:(女)结婚ing,但不是你的意中人。你的意中人身披金甲圣衣、驾着七彩祥云来......(感觉要发生点神马事情)......
二、VBA(Excel)中常见的对象
2.1工作簿:也就是Excel文件,Wokrbook表示。
2.2工作表:工作簿Workbook中的对象,WorkSheet表示
2.3单元格:工作表WorkSheet中的对象,可以用Range或cells来表示
2.4图表、图片等等其他对象。
三、集合:类似集体相亲,大家一起玩相亲......又如一个住宅小区是各栋楼、绿化等的集合。集合本身也是对象。
3.1 多个工作簿,Workbooks表示工作簿集合。
3.2 多个工作表,Worksheets表示工作表集合,一个Workbook是包含很多个工作表的集合。
3.3 Sheet,即可以指工作表Worksheet,也可以指图表Chart等。见下图,Sheet可以是黑色框内的任一个对象。Worksheets表示工作表集合是同类型的,如一群狮子是集合,但都是狮子,类似英语中的复数。Sheets集合就是指工作表、图表等这些对象的集合,可以是同类型的也可以是不同类型的,得看实际情况而定,如一群动物,有狮子有鬣狗有斑马有鸵鸟.......,又如一群动物,但只有狮子没有其他动物(吃光了)。所以,工作簿中只有工作表,那么Sheets就是工作表集合,工作簿中有工作表有图表,那么Sheets就是工作表和图表的集合。
代码一般是这样的结构:
Sub 代码的命名()
中间这里写代码
End Sub
【特别注意:运行代码前,请将鼠标光点放到代码区,操作:菜单栏--视图--本地窗口,打开本地窗口,键盘F8一下一下地按逐句运行代码,看每句代码运行之后的效果】
Sub 父对象与子对象()
'设定对象要使用set语句
'如设定a为单元格区域 [A1:A2]
Set a = Range("a1:a2")
'设定b为工作表
Set b = WorkSheets("小明")
'a的父对象的名称
sheetname = a.Parent.Name '返回sheetname=小明,即工作表的名称
'b的父对象的名称
workbookname = b.Parent.Name '返回workwookname=1.对象属性方法.xlsm,即工作簿的名称
MsgBox sheetname
MsgBox workbookname
'即:层级关系是:单元格---工作表---工作簿---??? 从小到大。参考下面语句
' a 已设定为单元格区域,见上面set语句!
d = a.Parent.Parent.Parent.Name
MsgBox d
'下面语句返回比尔盖茨吗?
MsgBox a.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Name
End Sub
Sub 属性()
'单元格a5的行高等于单元格a1的行高,或指定值
Range("a1").RowHeight = 50
Range("a5").RowHeight = Range("a1").RowHeight
'指定当前工作簿活动工作表中某个单元格的值为100
Range("a1").Value = 100
'VBA可以不激活对象就对对象进行属性修改,如下语句:设定【1.对象属性方法.xlsm工作簿】下的【小明】工作表的【A1】单元格值为200
Workbooks("1.对象属性方法.xlsm").Worksheets("小明").Range("a1").Value = 200
'有些对象的属性是只读的,不能简单的通过赋值来修改,如工作簿的名称Name属性,单元格的Text属性
a = Range("a1").Value'将单元格A1的值赋予给a,根据上面语句a=200
Range("a1").NumberFormat = "$#,##0.00" '设置单元格格式
b = Range("a1").Text'返回单元格A1的格式
Name = ThisWorkbook.Name'返回当前工作簿的名称【"1.对象属性方法.xlsm"】
End Sub
Sub copy()'单元格的copy复制(方法)
'将单元格区域d12:f15复制到h12
Range("d12:f15").copy Destination:=Range("h12")
'可以简写为
Range("d12:f15").copy Range("L12")
End Sub
Sub 单列去重复方法()'利用录制宏:【数据--删除重复项】 生成的代码
'Columns:=1,1列数据
' Header:=xlNo,数据没有标题
Range("$K$1:$K$15").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
Sub 多列去重复()
Range("$N$1:$o$15").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
End Sub