Excel VBA 常用对象:

Application  Excel应用程序

Workbook  Excel 工作簿

Worksheet  工作表

Range  单元格


Application对象

Application对象四种属性:ScreenUpdating属性;DisplayAlerts属性;EnableEvents属性;WorksheetFunction属性。

Application.ScreenUpdating = False/True    是否显示计算结果到屏幕上。

Application.DisplayAlerts = False    不显示警告信息

Application.Events = False    禁用事件,先禁用事件再开启事件可以防止程序进入死循环。

WorksheetFuncton可以使用Excel中的函数(如CountIF),例如:

Dim count As Integer

count = Application.WorksheetFunction.CountIF(Range("A1:B50") > "100")

引用对象把每一级对象名写清楚:

Application.Workbooks("Book1").Worksheets("Sheet1").Range("A1")  选择A1单元格,简写为 Selection.value=30

Application常用属性:

VBA 不能取得类WorksheetFunction的Match属性_sed



Workbook对象

workbooks表示当前打开的所有工作簿

Workbooks("Book1.xls")  引用Book1工作簿

ThisWorkook表示 代码 所在的工作簿 ActiveWorkbook 表示当前活动工作簿

Workbook属性: ThisWorkbook.Path读取名称; ThisWorkbook.FullName读取带路径的名称

Workbooks.Add "E://Book2.xls" 新建工作簿

Workbooks.Open "E://Book2.xls"  打开工作簿

Workbooks("Book1.xls").Activate  从所有打开的工作簿中激活某一工作簿

Workbooks("Book1.xls").Save  保存工作簿

Workbooks("Book1.xls").SaveAs Filename := "E://Book3.xls"  另存为

Workbooks.Close    关闭所有打开的工作簿

Workbooks("Book1.xls").Close savechanges := True  关闭并保存修改



Worksheet对象

工作表的引用:Worksheets.Item(1)   或   Worksheets ("sheet1")

添加新工作表

Worksheets.Add before := Worksheets(1)  在第一张工作表前插入新工作表

Worksheets.Add after := Worksheets(1)  在第一张工作表后插入新工作表

Worksheets.Add after := Worksheets(1), Count := 3    插入三张工作表

Worksheets(2).Name = 修改名称

Worksheets("sheet1").Delete  删除工作表

Worksheets(1).Selete  /  Worksheets(1).Activate    二者等效,激活工作表

复制工作表:

Worksheets("工资表").copy before := Worksheets("出勤登记表")

ActiveSheet.Name = "工资表备份"

移动工作表:将copy改为move



Range对象

引用:

Worksheets("sheet1").Range("A1").Value = 100

选择多个区域并集:

Range("A1:A10, A4:E6, C3:D9").Select


选择多个区域并集: 去掉逗号

Range("A1:A10 A4:E6 C3:D9").Select

使用Cells引用:

ActiveSheet.Cells(3, 4).Value = 100

ActiveSheet.Cells(3, "D").Value = 100

Range("B3:F9).Cells(2, 3) = 100


引用整行:

ActiveSheet.Rows("3:5").Select  3到5行

ActiveSheet.Row(3).Select  第三行

ActiveSheet.Rows.Select  所有行

引用列同理,换成Columns

Offset属性:

Range("A1").Offset(2, 3)  = 100    下移两行,右移三行;负数表示上移和左移

Resize属性:

Range("B2").Resize(5,4).Select    将B2单元格扩大成5行4列的区域,B2在左上角,同理可以缩小

UsedRange属性:

ActiveSheet.UsedRange.Select  已使用的单元格围成的矩形区域,包括空行

CurrentRange属性:

Range("B5").CurrentRange.Select  以空行和空列为边界的区域

End属性:  返回当前区域结尾处单元格

Range("C5").End(xlUp).Select

xlUp 向上 ;xlDown 向下;xlToRight 向右; xlToLeft 向左

End属性应用:

VBA 不能取得类WorksheetFunction的Match属性_sed_02

Activate与Select等效:

ActiveSheet.Range("A1:B10").Select   可以换成Activate


复制单元格区域:

Worksheets("sheet1").Range("A1:A10").Copy Worksheets("sheet2").Range("B1")  指定粘贴区域最左上角单元格

只粘贴数值:

VBA 不能取得类WorksheetFunction的Match属性_sed_03


剪切单元格换成 Cut

删除单元格:

Range("B5").Delete Shift := xlToLeft  删除后右侧单元格左移

Range("B5").Delete Shift := xlUp  删除后下侧单元格上移

Range("B5").EntireRow.Delete   删除整行

Range("B5").EntireColumn.Delete  删除整列


.Count 计数,Worksheets.Count 统计总共有几个Worksheets

连接字符串 &