eg.
对象的层级结构:
Excel常用对象
Application(Excel应用程序)
Workbook (工作簿)
Worksheet(工作表)
Range(单元格)
eg.
依据对象层级结构一步一步定位到单元格,使用Value属性设置值
简略写法:
Application可省略
对于操作的是当前的工作簿(也可称之为活动工作簿):Workbooks可省(当我们所执行程序前所点击的工作簿称之为当前工作簿)
对于操作的是当前的工作表(也可称之为活动工作表):Worksheets可省
Value属性也可省略,默认调用的就是Value => Range("A6") = 600
引用某个单元格:
Range方式:Range("A1") A列1行 eg.Range("A1").Value = 100
Cells方式:Cells(2,1) 2行1列 eg.Cells(2,1).Value = 100
[]方式:[A3] eg.[A3].Value = 300
Select方法:选择某个单元格
ActiveCell:引用活动单元格
选择某个单元格之后,这个单元格就是活动单元格,使用ActiveCell进行引用
eg. Range("A4").Select
ActiveCell.Value = 400
单元格的一些特殊属性:
Interior:内部格式,Range对象属性,也是对象,可以设置单元格背景色、图案等
eg.
Range("A4").Select
ActiveCell.Value = 400
ActiveCell.Interior.Color = vbBlue
//ActiveCell.Interior.Color = VBA.RGB(255,192,0)
Font:字体格式,Range对象属性,也是对象,可以设置字体、字号、字体颜色等
eg.
Range("A4").Select
ActiveCell.Value = 400
ActiveCell.Interior.Color = VBA.RGB(255,192,0)
ActiveCell.Font.Color = vbBlue
ActiveCell.Font.Size = 20
ActiveCell.Font.Bold = True //字体加粗
结合变量进行使用:
Dim Row As Long,Column As String
Row = 1
Column = "B"
Range(Column & Row).Value = 500
Row = 2
Range(Column & Row).Value = 600
________________________________________________
Dim Row As Long,Column As Variant
Row = 1
Column = "B"
Range(Column & Row).Value = 500
Range(Column & Row).Value = 600
Column = 3
Row = 2
Cells(Row,Column).Value = 700
填充数字:
Dim Column As Long,Row As Long
Column = 8
Row = 1
For Row = 1 To 10
Cells(Row,Column).Value = Row
Next Row
引用单元格区域:
Range方式:Range("A1:B3") Range("A5","B7")
Range结合Cells方式:Range(Cells(9,1),Cells(11,2))
[]方式:[A13:B15]
Selection:表示选定的单元格或单元格区域
结合Range对象和Cells属性一起使用:Range("B2:D9").Cells(2,2)
CurrentRegion属性:Range对象属性,指定单元格开始的连续区域
UsedRange属性:工作表对象属性,整个工作表包含有数据或格式的单元格范围,表示实际使用的范围
引用单元格区域 —— 结合变量进行引用
使用Range方式
使用Range和Cells结合的方式
使用名称引用单元格区域
使用Range方式:
使用[]方式:
[Data].Font.Color = RGB(0,0,255)
如何设置名称
引用不连续的单元格区域:
eg. Range("A1:B3,A5:B7,A9:B11,A13")
引用所有单元格:Cells
引用特殊的单元格:
引用列:
Range方式
引用单列:Range("A:A")
引用连续多列 Range("B:D")
引用不连续多列 Range("C:C,E:G.I:I")
Columns方式
引用单列:Columns("A") Columns(3) //也可以使用列序号的方式
引用连续多列:Columns("E:F")
引用不连续多列:Union(Columns(3),Columns("E:G"),Columns("I"))
EntireColumn属性
引用包含指定单元格的整列
引用行:
使用Range方式
引用单行
eg. Range("1:1").Value = 100
引用连续的多行
eg. Range("2:4").Value = 200
引用不连续的多行
eg.Range("5:5,7:9,11:11").Value = 300
使用Rows方式
引用单行
eg. Rows("1").Value = 100 或 Rows(2).Value = 200
引用连续的多行
eg. Rows("3:5").Value = 300
引用不连续的多行
eg. Union(Rows(6),Row("8:10"),Row("12")).Value = 400
EntireRow属性
引用包含指定单元格的整行
动态引用单元格区域:
Offset:基于当前Range对象按照指定行数和列数进行移动
注:若想要往上移动、往左移动,就使用负数
针对单元格区域也可以使用offset
Resize:动态调整当前Range对象的大小,增加或减少行列数(动态扩展)
注:如果是单元格区域,也可以使用Resize,只不过是基于单元格区域最左上角的单元格进行调整的
End:用于标识连续单元格区域的结束位置
使用End选择一块连续的单元格区域,A1:F8
Range("A1",ActiveCell.End(xlToRight).End(xlDown)).Interior.Color = RGB(255,192,0)
Select和Activate的区别:
针对单元格:
Select方法:用于选择一个或多个指定的单元格区域
Activate方法:用于激活指定的单元格区域,将焦点移动到该区域
针对单元格区域:
Sub Select与Activate()
Range("B1:C3").Select
Range("B4:C6").Activate
Range("C5").Activate //C5单元格获得焦点
ActiveCell.Value = 200 // ActiveCell引用活动单元格
Selection.Interior.Color = RGB(255,192,0) // Selection引用单元格选择区域
End Sub
引用工作表:
使用名称引用(不区分大小写)Worksheets("sheet2")
eg. Worksheets("Sheet2").Activate
使用索引引用 Worksheets(3)
eg. Worksheets(1).Activate
使用工作表的代码名称引用 wsXxx
ActiveSheet:活动工作表 其中.Name:获取工作表的名称;.Index:获取工作表的索引(包含图表工作表)
eg. Debug.Print ActiveSheet.Name,ActiveSheet.Index
Charts:表示图表工作表的集合
eg. Charts("Chart1").Activate
Sheets集合:所有工作表集合,包含图表工作表(Chart对象),也包含普通工作表(Worksheet对象)
注:Worksheets:包含普通工作表的集合
Worksheet.Select方法参数:Replace:=False => 不去替换当前的选择;其中Replace:=可省
引用工作簿:
使用名称引用工作簿(Excel标题栏名称)
eg1.
Sub 引用工作簿()
Workbooks("工作簿1.xlsx").Activate
Debug.Print ActiveWorkbook.Name
End Sub
=> 工作簿1.xlsx
eg2.
Sub 引用工作簿2()
Workbooks("工作簿2").Activate
Debug.Print ActiveWorkbook.Name
End Sub
=> 工作簿2
其中未保存,无需添加后缀名;已保存,需要添加后缀名
ActiveWorkbook表示活动工作簿
注:对于新创建的工作簿,会自动变为活动工作簿
eg3.
Sub 引用工作簿3()
Workbooks.Add
Debug.Print ActiveWorkbook.Name
End Sub
=> 工作簿3
使用索引的方式引用工作簿(按打开顺序基于索引去引用某一个工作簿)
eg4.
Sub 引用工作簿4()
Workbooks(1).Activate
Debug.Print ActiveWorkbook.Name
End Sub
技巧:若想直接获得最后一个工作簿,可以使用Workbooks(Workbooks.Count)
eg5.
Sub 引用工作簿5()
Workbooks(Workbooks.Count).Active
Debug.Print ActiveWorkbook.Name
End Sub
注:1. 当关闭某个工作簿之后,会自动重新编号
2. 特殊工作簿:ThisWorkbook —— 当前代码所在的工作簿
eg6.
Sub 引用工作簿6()
ThisWorkbook.Activate
Debug.Print ActiveWorkbook.Name
End Sub
对象变量:(复用方便)
声明对象变量:Dim 变量名 As 对象类型
为对象变量赋值:Set 变量名 = 对象
对于对象变量来说,可以引用新的对象:
对于新的工作簿,如何进行引用(为新的工作簿设置对象变量)
eg.
Sub 对象变量()
Dim wb As Workbook
Set wb = Workbooks.Add
Debug.Print wb.Name
End Sub
对于新的工作表,如何进行引用(为新的工作表设置对象变量)
eg.
Sub 对象变量()
Dim wb As Workbook
Set wb = Workbooks.Add
Debug.Print wb.Name
Dim ws As Worksheet
Set ws = wb.Worksheets.Add
Debug.Print ws.Name
End Sub
注:没有指定工作簿,表示针对的是这个活动的工作簿
释放掉对象变量所占用的内存空间:Set 变量名 = Nothing
eg.
注:正常情况下,程序执行完毕之后,这些变量所引用的内存空间自然就会被释放掉
With语句:
用于提高代码编写以及执行效率
语法:
With 对象
.属性 = 值
.方法
End With
正常情况下:
使用 With:
简化: