VBA基础学习之Excel对象
使用VBA进行编程时,用户将要处理的重要对象很少。下面是一些常见的对象 -
- 应用程序对象
- 工作簿对象
- 工作表对象
- 范围对象
1.13.1 应用程序对象
应用程序对象由以下部分组成 -
- 应用程序范围的设置和选项。
- 返回顶级对象的方法,比如ActiveCell,ActiveSheet等等。
示例:
'Example 1 :
Set xlapp = CreateObject("Excel.Sheet")
xlapp.Application.Workbooks.Open "C:\test.xls"
'Example 2 :
Application.Windows("test.xls").Activate
'Example 3:
Application.ActiveCell.Font.Bold = True
1.13.2 工作簿对象
Workbook对象是Workbooks集合的成员,并包含当前在Microsoft Excel中打开的所有Workbook对象。
示例:
'Ex 1 : To close Workbooks
Workbooks.Close
'Ex 2 : To Add an Empty Work Book
Workbooks.Add
'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True
'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate
Sub test()
Dim sht As Worksheet
Dim i As Integer
'创建shell对象
Set WshShell = CreateObject("WScript.Shell")
' 定义桌面路径
desktop = WshShell.SpecialFolders("Desktop")
For Each sht In Worksheets
If sht.Name <> "部门" Then
i = i + 1
Range("a" & i) = sht.Name
End If
Next
Dim fileName As String
fileName = "demo.xlsx"
' 关闭屏幕更新
Application.ScreenUpdating = False
' 关闭弹窗
Application.DisplayAlerts = False
' 新增工作簿
Workbooks.Add
ActiveWorkbook.Sheets(1).Range("a1") = "新建一个工作簿"
' 不保存在默认文件夹里用 saveas
ActiveWorkbook.SaveAs fileName:=desktop + "/" + fileName
ActiveWorkbook.Close
' 打开工作簿
Workbooks.Open fileName:=desktop + "/" + fileName
ActiveWorkbook.Sheets(1).Range("a2") = "打开操作了一下"
' 在哪里打开保存在哪里
ActiveWorkbook.Save
ActiveWorkbook.Close
' 恢复屏幕更新
Application.ScreenUpdating = True
' 恢复屏幕更新
Application.DisplayAlerts = True
End Sub
1.13.3 工作表对象
工作表对象是工作表集合的成员,并包含工作簿中的所有工作表对象。
示例:
'Ex 1 : To make it Invisible
Worksheets(1).Visible = False
'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True
# 删除
Sub test()
Sheets.Add Count:=100 '添加100个sheet
Excel.Application.DisplayAlerts = False '取消删除确认提示框
For i = 1 To 100 Step 1
Sheets(1).Delete ' 循环删除第一张表
Next
Excel.Application.DisplayAlerts = True
End Sub
# 复制
Sub test()
For i = 1 To 10
Sheets(1).Copy after:=Sheets(Sheets.Count) '创建副本
Next
End Sub
sheets 和 worksheets 的区别
表有多种分类 工作表,chart等
sheets 是 统称
worksheets 指 工作表
一般我们用的表都是worksheets, 所以和sheets一样,如果还有chart 等其他表格类型,将会有区别,比如sheets.count 和 worksheets.count 就会不一样
1.13.4 范围对象
Range对象表示单元格,行,列或包含一个或多个连续单元格块的单元格的选择。
示例:
'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"
'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5
Sub RangeDemo()
Dim i As Integer
Dim j As Integer
i = 11
j = 15
'单元格操作
' 选中a1,硬编码,不灵活
[a1].Select
' Cells(行, 列)
Cells(2, 1).Select
Cells(i, j).Select
' range(区域)
Range("a3").Select ' 单个单元格
Range("a1", "a5").Select ' 选择区域
Range("a6:a10").Select
Range("a" & i & ":a" & j).Select ' 支持变量
' 单元格偏移range("a1").Offset(往下偏移,往右偏移)
Range("a1").Offset(2, 3).Select
' 选中边界单元格
Range("a65536").End(xlUp).Select
row_cnt = Range("a65536").End(xlUp)
' MsgBox row_cnt
' 重新选区域
Range("a1").Resize(2, 3).Merge
' 选中整行
Range("a1").EntireRow.Select
' 复制单元格或者区域
Range("a1").Copy Range("b4")
Range("a1").EntireRow.Copy Range("a3") ' 整行copy目标点必须a列的某行,因为整行的个数一定,换一列不匹配
Range("a3:b4").Copy Range("c6")
End Sub