VBA —— 第7章面向对象

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:

简化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值