引言
上一張介紹了窗體,主要目的是可以輸入各種過濾條件。那麼怎麼展示呢?我們之前已經確定要使用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
結果: