VBA Excel 實踐(四)Excel自身對象簡介及Excel對象的引用

引言

上一張介紹了窗體,主要目的是可以輸入各種過濾條件。那麼怎麼展示呢?我們之前已經確定要使用excel本身來展示過濾(查詢)結果。本章對我們要操作的excel的元素進行簡單介紹,包括我們要使用的基本對象,對象的方法、屬性。

一、Excel基本對象簡介

我們要使用程序去操作Excel表格,那麼就必須告訴程序我們操作的對象是什麼?Excel中我們需要操作的對象可以分這麼幾個:

  1. Excel本身(Application),比如打開,關閉,保存
  2. 工作簿(WorkBook)
  3. 工作頁籤(WorkSheet)
  4. 單元格(Rang)
  • 他們基本的層次關係如下圖:

當然這些最基礎的對象,也是最常用的對象。 還有如圖表對象chart等等

二、對象的引用

2.1 Application對象

Application對象代表整個 Microsoft Excel 應用程序

Application 對象包括:

應用程序範圍的設置和選項。

返回頂級對象的方法,如 ActiveCellActiveSheet 等。

  • 示例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 對象的屬性和方法:

  1. Range 屬性
  2. Cells 屬性
  3. RangeCells
  4. Offset 屬性
  5. 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)(其中cell1cell2 是指定起始和終止單元格的 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

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章