3. excel 物件的操作

25
南南南南 Excel南南南南南 3-1 3. Excel 物物物物物

Upload: aiko

Post on 16-Mar-2016

139 views

Category:

Documents


7 download

DESCRIPTION

3. Excel 物件的操作. 1. 物件變數. Excel VBA = VB + Excel 物件 常見 Excel 物件變數 的宣告: Dim wb As Workbook ‘ 活頁簿 Dim s1 As WorkSheet ‘ 工作表 Dim ra As Range ‘ 範圍 Dim f1 As UserForm ‘ 表單 Dim sh As Shape ‘ 圖形 Dim c1 As Chart ‘ 圖表 Dim pt As PivotTable ‘ 樞紐分析表 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3.  Excel 物件的操作

南台科大 Excel 物件的操作 3-1

3. Excel 物件的操作

Page 2: 3.  Excel 物件的操作

Excel 物件的操作 3-2南台科大

1. 物件變數 Excel VBA = VB + Excel 物件 常見 Excel 物件變數的宣告:

Dim wb As Workbook ‘ 活頁簿Dim s1 As WorkSheet ‘ 工作表Dim ra As Range ‘ 範圍Dim f1 As UserForm ‘ 表單Dim sh As Shape ‘ 圖形Dim c1 As Chart ‘ 圖表Dim pt As PivotTable ‘ 樞紐分析表

加 s 的代表集合物件 ( 複數 ) ,如 Worksheets

Page 3: 3.  Excel 物件的操作

Excel 物件的操作 3-3南台科大

1.1 物件的屬性與方法 物件的組成包括:

( 靜態 ) 屬性 (attributes) :紀錄物件的各種性質。如,範圍的底色、字型、行數、列數等。 ( 有些屬性是唯讀 ) ( 動態 ) 方法 (methods) :物件的相關操作。如,範圍的 copy 、 delete 、 select 、

activate 等。

屬性

方法

Page 4: 3.  Excel 物件的操作

Excel 物件的操作 3-4南台科大

1.3 物件變數的語法 以 Set 設定物件變數的值。 以 dot 指定物件的屬性、方法。

Sub 複製 ()Dim r As Range ‘ 宣告 r 為範圍物件變數Set r = Range("A1:B1") ' 指定 r 的值為 A1:B1r.Copy ' 執行 r 的 Copy 方法Set r = Range("A2:B2") ' 更改 r 的值為 A2:B2r.PasteSpecial ‘ 執行 r 的選擇性貼上r.Interior.Color = RGB(0, 255, 0) ‘ 儲存格背景設為綠色Set r = Nothing ‘ 清除 r 的內容End Sub

Page 5: 3.  Excel 物件的操作

Excel 物件的操作 3-5南台科大

2. 活頁簿Dim wb As WorkbookDim wb2 As WorkbookDim wb3 As Workbook‘ 作用中活頁簿Set wb = ActiveWorkbook‘ 開新活頁簿Set wb2 = Workbooks.Add‘ 開啟舊檔 ( 須包含完整路徑及檔名 )Set wb3 = Workbooks.Open("D:\ 台糖 \Excel\Excel 2

003 VBA 進階訓練班 \EX1.xls")

Page 6: 3.  Excel 物件的操作

Excel 物件的操作 3-6南台科大

‘ 切換活頁簿wb.Activate‘ 切換活頁簿wb2.Close SaveChanges := False‘False 表不儲存關閉‘True 表儲存後關閉‘ 省略則會出現詢問對話方塊‘ 另存新檔wb.SaveAs ("D:\ 台糖 \Excel\Excel 2003 VBA 進階訓練班 \qqq.xls")

Page 7: 3.  Excel 物件的操作

Excel 物件的操作 3-7南台科大

‘ 儲存檔案wb3.Save‘ 關閉所有活頁簿Workbooks.Close

Page 8: 3.  Excel 物件的操作

Excel 物件的操作 3-8南台科大

3. 視窗 一個活頁簿會對應一個視窗 在 VBA 中,指定視窗的方式:

Windows(3)Windows(“EX3”)

視窗編號會因活頁簿的開啟、關閉而改變 活頁簿的 Activate 及關閉,也可藉由視窗來執行:

Windows(3).Activate ‘ 切換視窗Windows(“EX3”).Close ‘ 關閉視窗

Page 9: 3.  Excel 物件的操作

Excel 物件的操作 3-9南台科大

調整視窗大小:‘ 視窗最大化Windows(2).WindowState = xlMaximized‘ 視窗最大化Windows(“EX1”).WindowState = xlMinimizes‘ 視窗還原Windows(“EX1”).WindowState = xlNormal

Page 10: 3.  Excel 物件的操作

Excel 物件的操作 3-10南台科大

4. 工作表 以名稱指定工作表:

工作表名稱 ( 字串 ) :Dim s2 As WorksheetSet s2 = Sheets(" 工作表名稱 ")Set s2 = Worksheets(“Sheet3”)

工作表物件名稱 ( 工作表 ) :Dim s2 As Worksheet‘ 下行 OK !Set s2 = 工作表物件名稱‘!!! 下 2 行錯誤Set s2 = Sheets(" 工作表物件名稱 ")Set s2 = Worksheets(" 工作表物件名稱 ")

Page 11: 3.  Excel 物件的操作

Excel 物件的操作 3-11南台科大

以索引指定工作表: 工作表索引:工作表在活頁簿中,由左至右的順序;與專案總管中的編號不同。 工作表索引會因工作表的移動、新增、刪除而改變。專案總管中的編號則不變。 Worksheets :只限一般工作表

(Sheet1, Sheet2,...) ,不含圖表工作表 (Chart1, Chart2, …) Sheets :包含一般工作表 (She

et1, Sheet2,...) 及圖表工作表(Chart1, Chart2,...)

Page 12: 3.  Excel 物件的操作

Excel 物件的操作 3-12南台科大

Dim s1 As Worksheet, s2 As WorksheetDim c1 As ChartSet s1 = Sheets(3)’ 與 Set s1 = Worksheets(2)’ 及 Set s1 = Sheets(“ 工作表名稱” ) 相同Set s2 = Worksheets(3)‘ 與 Set s2 = Sheets(4)‘ 及 Set s2 = Worksheets(“Sheet3”) 相同Set c1 = Sheets(1) ‘ 圖表工作表 Chart1Set c1 = Worksheets(1) ‘!!!!! NGSet s1 = Sheets(1) ‘!!!!! NGMsgbox s2.Index ‘ 工作表索引Msgbox s2.Name ‘ 工作表名稱

Page 13: 3.  Excel 物件的操作

Excel 物件的操作 3-13南台科大

選取與啟動:工作表一經選取 (select) ,即被啟動 (activate) 而成為作用中工作表 (ActiveSheet) 。所以工作表的 select 和 activate 是一樣的。Worksheets(“ 工作表名稱” ).SelectSheets(4).Activate

多工作表的選取:只能用 select ,不能用 activateWorksheets(Array(2, 3)).SelectSheets(Array(2, 3)).Select

Page 14: 3.  Excel 物件的操作

Excel 物件的操作 3-14南台科大

隱藏 / 顯示工作表:Sheets(1).Visible = True ‘ 顯示 Sheets(1).Visible = False ‘ 隱藏,但可手動取消 Sheets(1).Visible = xlVeryHidden ‘ 隱藏且無法取消或Worksheets(1).Visible = TrueWorksheets(1).Visible = FalseWorksheets(1).Visible = xlVeryHidden

Page 15: 3.  Excel 物件的操作

Excel 物件的操作 3-15南台科大

新增:Sheets.Add

刪除:Worksheets(1).Delete

搬移:Sheets(“ 工作表名稱” ).Move before:=Sheets(2)

複製:Sheets(“ 工作表名稱” ).Copy after:=Worksheets(3)

Page 16: 3.  Excel 物件的操作

Excel 物件的操作 3-16南台科大

5. 範圍 範圍的操作,在 Excel VBA 中相當重要,設定的方式有:

Range(“ 範圍” )Range(“A1”) ‘ 單一儲存格 A1Range(“B3:D5”) ‘ 連續範圍Range(“B3:D5, A6:C9”) ‘ 不連續的範圍Range(“B:B”) ‘B 行Range(“2:7”) ‘2~7 列

Range( 儲存格 A ,儲存格 B)Range(“B3”, “D5”) ‘ 連續範圍Range(ActiveCell, “A1”)

Page 17: 3.  Excel 物件的操作

Excel 物件的操作 3-17南台科大

5.1 範圍中的不連續區塊 ( 範圍 )Dim r1 As Range, r2 As Range'------------- AreasSet r1 = Range("B3:D5, A6:C9")Set r2 = r1.Areas(2) 'Areas(1 To N)MsgBox r2.Address ‘A6:C9For Each r2 In r1.Areas MsgBox r2.AddressNext r2

Page 18: 3.  Excel 物件的操作

Excel 物件的操作 3-18南台科大

5.2 範圍的聯集與交集Dim r1 As Range, r2 As Range‘ 聯集Set r1 = Union(Range("a1:b3"), Range("c5:d6"))‘ 交集Set r2 = Intersect(Range("a1:b3"),Range("b2:d

5"))

Page 19: 3.  Excel 物件的操作

Excel 物件的操作 3-19南台科大

5.3 範圍的邊界 Ctrl + Shift + 8 :包含目前位置的連續範圍

Dim r1 As RangeSet r1 = ActiveCell.CurrentRegion

Ctrl + 方向鍵:以目前位置為起點,連續範圍的邊界ActiveCell.End(xlUp).Select ‘ 連續的上邊界ActiveCell.End(xlDown).Select ‘ 連續的下邊界ActiveCell.End(xlToLeft).Select ‘ 連續的左邊界ActiveCell.End(xlToRight).Select ‘ 連續的右邊界

Page 20: 3.  Excel 物件的操作

Excel 物件的操作 3-20南台科大

Range 的邊界:Dim r1 As RangeSet r1 = Range(“C4:F11”)MsgBox r1.Row & “,” & r1.Column ‘r1 左上角 3,4‘r1 的列數 , 行數MsgBox r1.Rows.Count & “," & r1.Columns.Count

Page 21: 3.  Excel 物件的操作

Excel 物件的操作 3-21南台科大

5.4 欄列的選取 Rows ‘ 所有列 Rows(“5:5”) ‘ 第 5 列 Rows(5) Rows(“3:6”) ‘ 第 3~6 列 Columns ‘ 所有行 Columns(“D:D”) ‘ 第 4 行 Columns(4) Columns(“D”) Columns(“E:H”) ‘ 第 5~8 行 Range(“C4:F11”).Rows(“2:3”) ‘C5:F6 Range(“C4:F11”).Columns(“C:C”) ‘E4:E11

Page 22: 3.  Excel 物件的操作

Excel 物件的操作 3-22南台科大

6. 儲存格 Range(“B3”) Cells(3, 2) ‘Cells( 列,行 ) Cells(3, “B”) Cells(10) ‘ 第 10 個儲存格 (row major) Cells ‘ 所有儲存格 [B10] ‘B10 ,也能設定範圍 [B10:C12]

Page 23: 3.  Excel 物件的操作

Excel 物件的操作 3-23南台科大

Range 可以設定儲存格及範圍,缺點是不適合搭配 For-Next Cells 適合搭配 For-Next 操作,缺點是無法指定範圍 以 Cells 設定 Range 範圍:

Range(“C4:F11”)Range(Cells(4,3), Cells(11,6)) ‘ 結合兩者優點

Page 24: 3.  Excel 物件的操作

Excel 物件的操作 3-24南台科大

7. 相對參照 Range/Cells.Range/Cells

Dim r1 As RangeRange("c4:f11").Range("b2").Select 'D5MsgBox ActiveCell.AddressRange("g12").SelectSet r1 = ActiveCell.Range(“a1:b2”) 'G12:H13MsgBox r1.AddressRange("c4:f11").Cells(3, 2).Select 'D6MsgBox ActiveCell.Address

Page 25: 3.  Excel 物件的操作

Excel 物件的操作 3-25南台科大

Offset( 列位移,行位移 ) :[b10].Offset(2, 3).Select 'E12Cells(10, 2).Offset(-1,1) ‘C9Range(“C4”).SelectActiveCell.Offset(1, -1) ‘B5