引言
上一张介绍了窗体,主要目的是可以输入各种过滤条件。那么怎么展示呢?我们之前已经确定要使用excel本身来展示过滤(查询)结果。本章对我们要操作的excel的元素进行简单介绍,包括我们要使用的基本对象,对象的方法、属性。
一、Excel基本对象简介
我们要使用程序去操作Excel表格,那么就必须告诉程序我们操作的对象是什么?Excel中我们需要操作的对象可以分这么几个:
- Excel本身(Application),比如打开,关闭,保存
- 工作簿(WorkBook)
- 工作页签(WorkSheet)
- 单元格(Rang)
- 他们基本的层次关系如下图:
当然这些最基础的对象,也是最常用的对象。 还有如图表对象chart等等
二、对象的引用
2.1 Application对象
Application对象代表整个 Microsoft Excel 应用程序
Application 对象包括:
应用程序范围的设置和选项。
返回顶级对象的方法,如 ActiveCell和ActiveSheet 等。
- 示例1:
使用 Application 属性可返回 Application 对象。下例对 Application 对象应用 Windows 属性。
sub test
Application.Windows("book1.xls").Activate
end sub
- 示例2:
Application.ActiveCell 属性,返回range对象
请仔细区分活动单元格和选定区域。活动单元格为选定区域内部的一个单元格。而选定区域可以包含多个单元格,但只有一个单元格为活动单元格。下列表达式都是返回活动单元格,并且都是等效的,add1和add2是相同的值。
Sub test()
Dim add1, add2 As String
add1 = Application.ActiveCell.Address
add2 = ActiveCell.Address
MsgBox add1 & add2
End Sub
Application.ActiveChart 属性,返回chart对象
Application.ActiveSheet属性,返回sheet对象
Application.ActiveWorkbook属性,返回workbook对象
2.2 WorkBook对象
workbook代表一个 Microsoft Excel 工作簿。workbook对应的还有一个workbooks对象,Workbook 对象是 Workbooks 集合的成员。Workbooks 集合包含 Microsoft Excel 中当前打开的所有 Workbook 对象。
- 示例:
使用 Workbooks(index)(其中index 是工作簿名称或索引号)可返回一个 Workbook 对象。下例激活工作簿一。
先使用Workbooks的add方法创建一个工作簿,注释。然后在使用count方法查看由几个工作簿,最后使工作簿1激活。
Sub test()
'Workbooks.add (xlWBATChart)
MsgBox Workbooks.Count & Workbooks(2).Name
Workbooks(1).Activate
End Sub
编号指示创建或打开工作簿的顺序。Workbooks(1)
是创建的第一个工作簿,而 Workbooks(Workbooks.Count)
Workbooks 是最后一个。激活某工作簿并不更改其索引号。所有工作簿均包括在索引计数中,即便是隐藏工作簿也是如此。
Name 属性返回工作簿名称。您不能通过使用此属性来设置该名称;如果您需要更改该名称,请使用 SaveAs 方法,将该工作簿保存为其他名称。下例激活名为“Cogs.xls”的工作簿(该工作簿必须已经在 Microsoft Excel 中打开)中的 Sheet1。
2.3 WorkSheet对象
WorkSheet对象代表一个工作表。WorkSheet对应的还有一个WorkSheets对象
Worksheet 对象是 Worksheets 集合的成员。Worksheets 集合包含某个工作簿中所有的 Worksheet 对象。
Worksheet 对象也是 Sheets 集合的成员。Sheets 集合包含工作簿中所有的工作表(图表工作表和工作表)。
- 示例1:
使用 Worksheets(index)(其中index 是工作表索引号或名称)可返回一个 Worksheet 对象。下例隐藏活动工作簿中的工作表一。
Sub test()
Worksheets(1).Visible = False
End Sub
工作表索引号指示该工作表在工作簿的标签栏上的位置。Worksheets(1)
是工作簿中第一个(最左边的)工作表,而 Worksheets(Worksheets.Count)
是最后一个。所有工作表均包括在索引计数中,即便是隐藏工作表也是如此。
执行上述命令的结果比较:
执行前:sheet4存在
执行后:sheet4隐藏了
- 示例2:
使用 Add 方法可创建一个新工作表并将它添加到集合。下例将两个新工作表添加到活动工作簿的工作表一之前
Sub test()
Worksheets.add Count:=2, Before:=Sheets(1)
End Sub
执行前:
执行后:
2.4 Range对象
Range对象代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域 。
返回Range 对象的属性和方法:
- Range 属性
- Cells 属性
- Range 和 Cells
- Offset 属性
- Union 方法
- 示例1:
使用 Range(arg)(其中arg 为区域名称)可返回一个代表单个单元格或单元格区域的 Range 对象。下例将单元格 A1 中的值赋给单元格 A5。
Sub test()
Worksheets("Sheet3").Range("A5").Value = _
Worksheets("Sheet3").Range("A1").Value
End Sub
执行前:
执行后:
- 示例2:
下例通过为区域 A1:H8 中的每个单元格设置公式,用随机数字填充该区域。如果在不带对象识别符(句点左边的对象)的情况下使用 Range 属性,该属性会返回活动表上的一个区域。如果活动表不是工作表,则该方法失败。在使用没有显式对象识别符的 Range 属性之前,请先使用 Activate 方法激活一个工作表。
Sub test()
Worksheets("Sheet3").Activate
Range("A1:H8").Formula = "=Rand()" 'Range is on the active sheet
End Sub
- 示例3:
使用 Cells(row,column)(其中row 是行号,column 是列标)可返回一个单元格。第二行,将单元格 A1 赋值为 24。第三行,设置单元格 A2 的公式
Sub test()
Worksheets("Sheet3").Activate
ActiveSheet.Cells(1, 1).Value = 24
ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"
End Sub
结果:
- 示例4:
使用cells属性,做递增赋值操作。行递增年份,列递增季度。并且给范围内的表格设置属性。
使用 Range(cell1, cell2)(其中cell1 和cell2 是指定起始和终止单元格的 Range 对象)可返回一个 Range 对象。
注意每个 Cells 属性之前的句点。如果前导的 With 语句应用于 Cells 属性,那么这些句点就是必需的。本示例中,句点指示单元格处于工作表一上。如果没有句点,Cells 属性将返回活动工作表上的单元格。
Sub SetUpTable()
Worksheets("Sheet3").Activate
For TheYear = 1 To 5
Cells(1, TheYear + 1).Value = 1990 + TheYear
Next TheYear
For TheQuarter = 1 To 4
Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter
Next TheQuarter
With Worksheets(6)
.Range(.Cells(1, 1), _
.Cells(5, 6)).Borders.LineStyle = xlThick
End With
End Sub
结果: