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常用属性:
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属性应用:
Activate与Select等效:
ActiveSheet.Range("A1:B10").Select 可以换成Activate
复制单元格区域:
Worksheets("sheet1").Range("A1:A10").Copy Worksheets("sheet2").Range("B1") 指定粘贴区域最左上角单元格
只粘贴数值:
剪切单元格换成 Cut
删除单元格:
Range("B5").Delete Shift := xlToLeft 删除后右侧单元格左移
Range("B5").Delete Shift := xlUp 删除后下侧单元格上移
Range("B5").EntireRow.Delete 删除整行
Range("B5").EntireColumn.Delete 删除整列
.Count 计数,Worksheets.Count 统计总共有几个Worksheets
连接字符串 &