精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
EXCEL 教你VBA編程快速入門
通過一個示例認識Excel VBA程序
; X" |0 J- o5 _
首先,讓我們看看下面的代碼,在每行代碼的前面都附有代碼功能的解釋。0 ?, d6 V. N. a9 [* O; K
Sub 隔行設置背景色()# f/ _2 x$ Q7 ?1 }' ]
    '聲明常量值為15,即灰色的顏色索引值, G6 i: N) z) z) F; T$ C
    Const Gray = 15
* k4 l) l! k7 N$ ]7 P, N/ K$ t    '選擇工作表中的第2行,其中活動單元格為最左邊的單元格
/ Q1 ~) v# V6 ]( t" d) Y& ]    Range("A2").EntireRow.Select- j# a7 r7 m6 e
    '開始循環(huán).若活動單元格不為空,則重復循環(huán),
/ P: _. b$ H$ n# [- P. [# P    '直到活動單元格值為空時退出循環(huán)6 Y2 w8 {' V# t8 W1 }- {
    Do While ActiveCell.Value <> ""& B' S% V" o5 X! x' `
      '將所選行背景色設置為常量值Gray所代表的顏色,
' y4 J" i+ a. S+ t7 H# \      '本例中為灰色即15所代表的顏色索引值色  a! o; F4 D$ x) o9 ^$ ~$ v
      Selection.Interior.ColorIndex = Gray
& D1 |$ V9 L, ~/ S5 u* \      '選擇從活動單元格起向下的第2行7 J& T: o7 W% @& v
      '選擇整行后,其活動單元格為最左邊的單元格
0 r) g! n. r) d; N; h4 n3 }      ActiveCell.Offset(2, 0).EntireRow.Select
6 {# D, G# f" p% K# v5 }# S5 Z    Loop5 k& P6 T7 v# v7 C& O* C, d3 R9 y8 z
End Sub/ W! }+ t, H5 Q2 O
試試看,在Excel中運行上面的程序,只用短短的6行代碼,就能迅速地將你當前工作表中每隔一行添加背景色,使你的工作表更具有可讀性。7 I) o: T" B* k# T' }2 G+ \8 O
通過Excel對象模型編程,可以:
0 g& \) C1 l7 G3 ~5 y$ B 定制Excel,實現(xiàn)自動化操作,以滿足你特定的需要4 \' M; K3 m4 h# R6 U  U! I
添加額外的功能9 D. E& R  t! ?& m; y) q
節(jié)省時間和資源
1 d9 o9 E/ k7 F  ~: K! Z( S5 W提示 學習需要實踐,將所學習到的知識通過實踐才能真正理解和掌握。因此,邊閱讀邊上機操作,才能達到好的學習效果。" j1 @$ r- Y( R

* g) R1 x% Y& @+ P; s" n
9 r2 ~) ~4 Y6 C, }8 j* R認識VBA和宏; a1 H. s. b  M5 [
VBA是VB整合到Microsoft Office應用程序中的一個版本,在VBA中創(chuàng)建的代碼也稱作宏,宏是一系列的VB指令,通過在VB指令中使用Excel對象模型來執(zhí)行Excel操作任務。- C: C! [  M2 h( y( k$ A! ]/ y
在Excel中,你可以通過自已寫代碼來創(chuàng)建宏,也可以通過宏錄制器來創(chuàng)建宏。, `0 F2 \5 a! V" b5 I* g$ b
■ 創(chuàng)建宏9 n% m( H+ q# l
開啟Excel 2003,選擇菜單“工具——宏——宏”,出現(xiàn)的“宏”對話框。在“宏名”文本框中輸入所創(chuàng)建宏的名字,如“我的第一個宏”,單擊“創(chuàng)建”按鈕,Excel將自動打開VBE編輯器。  N8 B4 b: d  K% r* e/ ^. X
缺省的VBE編輯器顯示了3個窗口(可在“視圖”菜單中控制是否顯示),即:
9 N2 `) w. A$ c, d0 L2 X3 D● 代碼窗口 窗口標題為“Book1–[模塊1(代碼)]”。在該窗口中編寫程序代碼。也可在“工程窗口”中雙擊模塊名或?qū)ο竺蜷_相應的代碼窗口。: m$ q4 R# n# ]2 E( i
● 工程窗口 位于屏幕左側(cè)上方,窗口標題為“工程-VBAProject”。該窗口中顯示了當前所有的Excel對象和模塊,方便查看和管理。如單擊“Microsoft Excel對象”前的加號將展開所有的對象,當前共有4個對象即Sheet1,Sheet2,Sheet3和ThisWorkbook。/ M& x7 Z/ T% W& r7 Q) f
● 屬性窗口 位于屏幕左側(cè)下方,窗口標題為”屬性-模塊1”。該窗口顯示了當前所選項目的屬性設置。在這里,所選項為模塊1,可在屬性窗口中為模塊1改名為一個合適的名字,如在名稱文本框中,輸入“我的第一個模塊”后按Enter鍵,則工程窗口中的模塊名稱和代碼窗口標題名稱也相應變化。
1 a; Y% T) u8 ?& }( h6 x現(xiàn)在,在“我的第一個宏”程序中輸入下面的代碼:$ Y5 ^: E8 \# W; H5 d# @
Sub 我的第一個宏()" h" l: s1 G6 R, x9 Y  X
    Dim ws As Worksheet
* w4 ~6 ?6 f! x+ ^& k9 N) X    Set ws = ActiveWorkbook.Worksheets.Add
. h, n& T# E8 W- D    Range("A1").Value = "I am a student."3 r/ D" J7 [, r7 y4 n" A
End Sub- e- B# [- a+ M# e1 k  \
您先不需要明白這些代碼的含義以及它們?nèi)绾喂ぷ鳎院笪覀儠v解。
3 H; Y3 I, W8 J( _接下來,關閉VBE編輯器,返回Excel主界面(可單擊VBE編輯器左上角的Excel圖標或選擇菜單命令來進行此操作)。然后,選擇菜單“工具——宏——宏”,可看到在出現(xiàn)的“宏”對話框中已選取了“我的第一個宏”,單擊“執(zhí)行”按鈕,此時,一個新的工作表被創(chuàng)建,且在該工作表的單元格A1中自動輸入文本“I am a student.”
3 H' L' O9 Y: ^# K! {' n■ 錄制宏
" f! |! D: k! r除了在VBE編輯器中通過輸入代碼創(chuàng)建宏之外,您還可以通過宏錄制器錄制菜單命令、按鍵和其它操作來創(chuàng)建宏。
! E2 @. u4 [0 [首先,選擇菜單“工具——宏——錄制新宏”,在彈出的“錄制新宏”對話框中輸入宏名,如“年級”;在“快捷鍵”文本框中,輸入使所錄制的宏運行的快捷鍵,如B;在“保存在”下拉框中選“當前工作簿”;在“說明”文本框中輸入宏的功能描述,如“自動生成年級號”,單擊“確定”按鈕,開始錄制宏。此時,在工作表中出現(xiàn)一個如下圖1所示的懸浮的工具欄,有兩個按鈕,其中左邊為“停止錄制”按鈕,右邊為“相對引用”按鈕。


$ m) I1 u$ R" ]然后,在單元格A1中輸入“一年級”,A2中輸入“二年級”,單擊“停止錄制”按鈕。
. A! V) b/ L$ ^& ]9 |最后,測試剛錄制的宏。清除工作表中的內(nèi)容后,按Ctrl+Shift+B組合鍵,Excel將運行剛才所錄制宏,在單元格A1和A2中自動輸入“一年級”和“二年級”。
. R) Z- A' S6 s3 y9 L5 |提示 關于宏安全性。當你打開含有宏程序的工作簿時,Excel會檢查該工作簿中是否含有宏,若有,則會彈出“安全警告”對話框(在安全性級別設置為中的情況下),若點擊“啟用宏”按鈕,宏將運行。注意,對于未知宏,最好先使用殺毒軟件確保無宏病毒后再運行。9 f3 e; f; b% S1 K# ]
/ d( N& R, g% Y* z
$ a. D6 L* y5 x$ G
子程序
: A6 m8 _% Z: x3 ]先看看剛才編寫的代碼:0 `& I1 P* M, \% F4 S
Sub 我的第一個宏()
2 Y( Y! j1 V& H9 O4 k4 C3 I       Dim ws As Worksheet
) R' e' t, u" N4 K: h, Y       Set ws = ActiveWorkbook.Worksheets.Add7 t& h+ u. x, p& ~$ M3 [9 x+ }
       Range("A1").Value = "I am a student.") O. K2 z  Y8 g. R
End Sub
: p' L, e0 S. d# @: C關健詞Sub…End Sub開始和結束宏,其格式為:
: X+ Y  q8 n: R2 H! N$ V  R/ o/ NSub 宏名()  @- ^2 v( Y+ C1 n
        <代碼>
7 k$ Z$ {' r# m0 j' `" O, mEnd Sub
. h# F! X. B" k2 Z7 E一個子程序由一組代碼語句組成,以Sub開始,以End Sub結束。一個子程序不一定是宏。您能在一個子程序中調(diào)用另一個子程序。如:
9 W: \# q) H5 d$ v' c' f, ySub 我的另一個宏()
  [: v6 E( n1 N% U& l" O  我的第一個宏
5 ~! L' d9 X6 ]End Sub  W. F$ A: [( [6 G& o& d
如果運行“我的另一個宏”子程序,則調(diào)用”我的第一個子程序”,添加一個單元格A1內(nèi)容為”I am a student.”的新工作表。! a$ M8 w3 `" Z! [
創(chuàng)建單獨的子程序能更清晰地組織你的代碼,更容易地處理通用過程。例如,若需創(chuàng)建并顯示3個工作表,則可將上面代碼改寫為:
$ h, }; l1 a. _! e  u. ]Sub 我的另一個宏()
& N3 O! L) o& y: ]  我的第一個宏
0 P3 M3 \* U$ r1 U! f8 |7 I9 X  我的第一個宏: W1 W0 s' ]  E
  我的第一個宏" g" I7 m+ Y/ Q' ?7 g; E
End Sub
2 F0 W4 I' ]1 y7 S即將“我的第一個宏”子程序運行三次,不僅實現(xiàn)了最終的目標,而且也簡化了代碼。! z5 V; o+ g# I8 _

) b* F  [) z# z% ^% ~
* }( p+ S! M" s' o# F3 j對象、方法和屬性3 f: f" `6 e! a8 ^6 q8 n, b
Excel對象模型使用面向?qū)ο缶幊谭绞健B犉饋砗芨呱睿鋵嵑芎唵危恍枇私鈱ο蟆⒎椒ê蛯傩匀齻€基本的概念,就可以先入門了。6 j/ K' N# b( b6 I' {* b
對象,即某物;方法,即某物能做的事情;屬性,即某物的特征。& q- H& J0 ~" [( W0 N# |: D
例如,一臺空調(diào)即為一個對象,空調(diào)能做的事情如制冷、制熱、換氣等是它的方法,而對空調(diào)的描述則是它的屬性,如空調(diào)的顏色為白色、尺寸大小等。6 T/ D# U4 a6 L) u/ ?
讓我們來看看剛才程序中所使用的代碼,并區(qū)分對象、方法和屬性。
4 [2 _, ?' [* |+ sSet ws = ActiveWorkbook.Worksheets.Add2 P( B  x6 u% U8 E( P  W
    Range("A1").Value = "I am a student."* [. h; n1 d4 ?
這里有三個對象,即ws代表Worksheet對象,ActiveWorkbook對象代表當前工作簿,Range對象代表在當前工作表中的單元格區(qū)域。) `9 J# W1 v4 L: N
提示 Excel對象模型就是我們所能使用來編制Excel程序的對象列表。3 ]6 A, r" z5 j
當?shù)谝淮问褂媚硨ο笞兞繒r,以Set關鍵字開始,為該對象分配所需的內(nèi)存空間,并可為對象變量命以合適的名字,如上面的的ws。, e& U2 b# O5 s* c: Z- k
方法總是與對象相關聯(lián)。如在“我的第一個宏”程序代碼中包含一個Add方法,它與ws對象相關。使用方法時,應在對象和方法之間添加一個句點,如Worksheets.Add。在上面的代碼中,使用Add方法在活動工作簿中添加了一個新的工作表。" r/ Z; o" @" s" o
屬性也總是與對象相關聯(lián)。在上面的代碼中,包含一個屬性Value,它與Range對象相關。同方法一樣,使用屬性時,也應在對象與屬性之間添加一個句點,如Range.Rowheight。$ n9 |. A# `& ]5 l8 G& U2 w7 P0 V
每個對象都是一種特定的對象類型,每類對象都有自已的一組方法和屬性。在上面的代碼中,ws是一個Worksheet對象,有方法如Visible,有屬性如Count。屬于Worksheet對象的方法和屬性,其它類型的對象可能沒有,反之,其它對象有的方法,Worksheet對象不一定也有,如執(zhí)行語句
8 S! P' p8 @- L9 W  U1 ~% n4 t    Worksheet.Value=”Hello”+ a7 s2 u9 \/ W. h1 S2 Z7 A
將會出現(xiàn)錯誤,因為Worksheet對象沒有Value屬性。$ Y- g! t# H: ~! \3 P) i
8 Z7 j3 P5 O; }6 S: S' t( C7 d$ H8 H/ s

0 ^/ K# I8 t; ~9 S使用事件
# e1 J8 P3 }' @, t  D$ k6 U
先編寫一個宏。按前面所述的方法,創(chuàng)建一個名為“考勤記錄表”的宏程序,即在工作表菜單中選擇“工具——宏——宏”,輸入名稱“考勤記錄表”,單擊“創(chuàng)建”按鈕,自動打開VBE編輯器,選中“模塊1”,在工程屬性窗口的名稱框中輸入“考勤記錄表”。然后,在代碼窗口中輸入如下代碼:* M- G; W# C# B. @% M: l
Sub 考勤記錄表()$ Y, }- z, ^  l+ C
      Dim ws As Worksheet
( n4 ^& P6 Z+ V! p7 I      Set ws = ActiveWorkbook.Worksheets.Add/ z6 I+ D' r  E1 V+ y7 O7 y' J
      Range("A1").Value = "年級". x0 H) Y2 z8 L
      Range("C1").Value = "班級"4 e" E2 t  ^9 D8 C5 \- i$ @) n- [' M
      Range("B3").Value = "姓名"' z! }3 t: o6 V" k( O
      Range("D3").Value = "考勤"
/ ~+ @4 _. J8 d5 [( n4 w/ r      Range("B4").Value = "正常"6 x& X  a# J3 x, r! F& A" G
      Range("B5").Value = "遲到"
! J( v2 g4 i' n# R      Range("B6").Value = "早退", R* I: G; u' y% {
      Range("B7").Value = "缺課"
! q% W  y  q( w$ U      Range("B8").Value = "實到") {  ?) B7 _/ L$ `
End Sub8 H% H3 K# y; R
我們先設想一下,當你打開工作簿時,如果上面的程序能自動運行,生成你每天想要的表格,該多好啊!
2 w  I$ a; E5 W, q" ]- L; K) l這是可以實現(xiàn)的,你能使用對象事件來完成。當某事情發(fā)生在某對象上時,該對象的一個事件發(fā)生。例如,當單擊一個按鈕時,一個Click事件發(fā)生在該按鈕對象上。當開啟Excel時,Auto_Open事件發(fā)生,因此,要想當Excel打開時,某程序運行,則將該程序置于Open事件程序中即可。
/ C# I$ \5 U0 C  C打開Excel 2003,開啟VBE編輯器(可在工作表菜單工具——宏中選擇,也可按Alt+F11組合鍵),先創(chuàng)建上面的“考勤記錄表”宏程序。接下來,在工程窗口的Microsoft Excel對象模型中找到“ThisWorkbook”并雙擊,打開標題為ThisWorkbook的代碼窗口,可以看到在該窗口頂部有兩個下拉框,點擊左邊的對象列表下拉框,選擇“Workbook”,VBE編輯器自動添加Sub Workbook_Open事件過程,該Open事件將在Excel開啟時自動運行。現(xiàn)在,在該事件過程中添加需要在Excel開啟時自動運行的宏程序代碼,本例中,要使得當Excel工作簿打開時,“考勤記錄表”程序自動運行以建立一張表單,代碼如下:
7 q0 ~- }0 N/ ]$ d' m, p4 W# B! nPrivate Sub Workbook_Open()
9 d9 `' y+ Y( ]) ^/ ?# f       考勤記錄表
: r& b9 O% ~7 [9 @! H2 k& GEnd Sub
8 G% D& O6 l' p. I9 b保存工作表后退出,重新開啟該Excel工作簿,將會看到工作簿上新生成一張考勤記錄表單,這是”考勤記錄表”宏程序運行后的結果。% o' V( v7 `8 D: P; X; U, t% A9 ~

; g% R. U) v( N
  F) r$ F$ K5 f6 K/ u使用窗體——創(chuàng)建自已的對話框
/ t8 N: m. t" ^( L4 Q* _! T. H& V; T窗體是一個對話框,能在VBA中創(chuàng)建并設計,如添加復選框、文本、圖片和其它控件對象。窗體可用來與用戶進行交互,如傳遞信息給用戶或從用戶那里獲取信息。例如,當宏正在運行時,可向用戶顯示一個進度條,代表程序運行進度。
- y+ f/ Y7 f9 v對于上一小節(jié)中所展示的例子,當你每次打開該工作簿時,都會自動生成一個考勤記錄表。如果你一天打開該工作簿五次,將會生成5個考勤記錄表。但有時,你不想新生成考勤記錄表,因為你原來的考勤記錄表還需要補充填寫,所以,你應該能對該工作簿進行控制。這時,你可以使用窗體設計一個對話框,當你每次打開該工作簿時,都會出現(xiàn)一個帶有選項的對話框,讓你選擇是否創(chuàng)建新的工作表。
; N- K, x9 f$ h' u. S- P■ 使用窗體創(chuàng)建對話框
7 x8 P$ S% K6 J# J+ Y, t1.在Excel中,選擇菜單“工具——宏——宏”命令,彈出“宏”對話框,在“宏名”文本框中輸入“記錄表提示”,單擊“創(chuàng)建”按鈕,打開VBE編輯器;
' I6 _# Z5 |" q; V3 M2.在VBE編輯器中,選擇菜單“插入——用戶窗體”命令,將出現(xiàn)一個帶有控件工具箱的窗體,在屬性窗口中將名稱屬性改為“提示”,將Caption(標題)屬性改為“是否創(chuàng)建新的考勤記錄表?”,輸入完成并按Enter鍵后,窗體標題相應變化。3 K+ H; ^' l" P$ E
提示 在控件工具箱中,當鼠標指針移到某個控件上時,會顯示該控件名稱。
. b- D; c4 f9 V' s9 {% P  @3.在控件工具箱中,單擊“標簽”控件,然后在“提示”窗體中單擊,可看到標簽控件自動顯示在窗體中,在屬性窗口中,選擇Caption(標題)屬性并輸入“您想創(chuàng)建一個數(shù)據(jù)記錄表格嗎?”后,按Enter鍵,此時窗體中的標簽相應更新為所輸入的文字。" {& N3 d3 V8 L- k
提示 (1)您剛創(chuàng)建的“標簽”是一個對象,因此,它有自已的方法和屬性;(2)在控件工具箱中,點擊某控件并按住鼠標左鍵不放,將該控件拖到窗體中;(3)可通過屬性窗口中的Font和ForeColoe來改變標簽字體大小、類型和顏色等。
( n) f9 a. Q: r4.單擊“提示”窗體,控件工具箱也同時顯現(xiàn)。選取控件工具箱中的命令按鈕并單擊,再到“提示”窗體中單擊,將在窗體中添加一個按鈕。重復上述步驟,再在窗體上添加一個按鈕。9 B: {: Y. [, b$ ^2 k  D
5.在“提示”窗體中,單擊第一個命令按鈕,并在屬性窗口中設置其名稱屬性為“確定”,Caption(標題)屬性為“創(chuàng)建新考勤記錄表”;同樣,單擊第二個命令按鈕,并在屬性窗口中設置其名稱屬性為“取消”,Caption(標題)屬性為“不創(chuàng)建新考勤記錄表”。
; o3 N3 _* K( s& g6.在“提示”窗體中,調(diào)整剛創(chuàng)建的一個標簽、兩個按鈕的尺寸大小(使文本全部顯現(xiàn))、位置布局。最后窗體如下圖2所示。
" a7 Q( E1 u5 O3 V! c+ a  4 x: z7 P/ f- F; f  @+ H$ [# G
■ 使剛創(chuàng)建的窗體對話框運行  w: j7 N% F& e6 L' [& P
確保該Excel工作簿中含有上節(jié)所編寫的“考勤記錄表”宏程序。只須在三個不同的子程序中添加四行代碼,就能使該窗體按所需要的功能運行。+ u7 ]( G: R7 n1 p2 v* ^
1.首先,需要在Excel啟動后顯示對話框窗體。在工程窗口中雙擊ThisWorkbook對象,在出現(xiàn)的代碼窗口頂部左側(cè)下拉框中選擇Workbook,VBE編輯器自動產(chǎn)生Workbook_Open事件程序,然后在程序中添加一行代碼如下:: E& ^# {2 k! f# t
Private Sub Workbook_Open()! E  [4 z( O3 d. f# l
       提示.Show, y1 p0 X2 V0 i2 i, i
End Sub
# V; k) s: \/ `% \( f7 D. z注 “提示”窗體是一個對象,Show是它的方法。$ L2 I( F! L) e6 a  m% k9 F
2.在工程窗口中,雙擊窗體對象下的“提示”打開“提示”窗體。然后,給窗體中的按鈕控件添加代碼使其工作。1 D# O, r- M( ~- B. k6 g+ D
雙擊“創(chuàng)建新考勤記錄表”按鈕,打開代碼窗口。按要求,當用戶單擊此按鈕后,將創(chuàng)建一個新的考勤記錄表并隱藏窗體。代碼如下:6 e+ T+ C$ T+ u
Private Sub 確定_Click()
- K6 X4 [2 x' D, b- z2 u      考勤記錄表, e; X  y9 e6 I0 @( g3 L6 g  E
      提示.Hide- m4 f$ q+ }7 Z; N: Q
End Sub
* V1 f- @; k6 i& F注 “提示”是我們在屬性窗口中為窗體定的名字,Hide是該窗體對象的方法。
, h8 f1 o+ {  r3 V/ _3.同樣,回到“提示”窗體中,雙擊“不創(chuàng)建新考勤記錄表”按鈕,打開代碼窗口。按要求,當用戶單擊此按鈕后,將隱藏該窗體。代碼如下:
) ?) s5 s5 i* `Private Sub 取消_Click()! T* c  I7 x- }5 f0 s$ `3 F
      提示.Hide6 v! ?" X' |" F6 r6 x7 Q8 H
End Sub
2 k7 ]9 ?. E/ j2 m+ y8 Y% U: q% o) O4.好了,大功告成!現(xiàn)在要以保存Excel工作簿并關閉。然后,重新開啟該工作簿,效果如何?
! q: T, O: T: W; e! R% k3 e/ A; M) E# }' A! Q( V
8 r( i0 i5 _5 m& y
集合
) g2 N/ d9 V6 v! s! }  G
集合是一種特定類型的對象,代表一組其它對象。例如,一臺空調(diào)是一個對象,多臺空調(diào)組成空調(diào)集合。
0 r! u" b' O" b- t$ B0 f+ I一個集合也是另一個對象的屬性。例如,空調(diào)中的指示燈集合是空調(diào)對象的屬性,是單個指示燈對象的集合。因此,它們之間的關系是:
8 A# y# x6 M+ F! x7 q空調(diào)集合是多臺單個空調(diào)對象組成的集合,每個空調(diào)對象有一個稱作指示燈集合的屬性,而指示燈集合是單個指示燈對象組成的集合。7 d% R. o! ^7 X! P. W+ T& H* p
■ Excel中的集合) r2 G: D1 G# }# [$ H& |; R
在Excel對象模型中包括一些集合類型,如在前面小節(jié)中所編寫的代碼:) `" G& v2 @5 V" {
      Set ws = ActiveWorkbook.Worksheets.Add% ~" E: D4 m: p8 Z. R' M1 n, w
Worksheets是Worksheet對象的集合,也是ActiveWorkbook對象的一個屬性。在這里也可以得出集合的用處,一個工作簿可以包含任意個工作表,而Worksheets集合提供了管理這些工作表的簡單的方法。
4 F- ?" b5 Y* b8 h在Excel中的其它集合對象包括:
7 C' z4 X5 J* C8 F5 rSheets      工作簿中所有工作表的集合
7 O5 K5 a- y  l' g8 t: [Workbooks  所有打開的工作簿的集合
7 y; U: k$ v# A5 BCharts      工作簿中圖表工作表的集合
- i: @( C% X5 `& ^! d( O$ u■ 集合的方法和屬性
, Z# _- L4 ?, a6 a# L* b所有的集合都有方法和屬性,允許您去訪問集合中的單個對象。其中,最重要的方法和屬性中有3個在這里要用到,即Count屬性、Item方法和Add方法。% B6 _# S5 a- H/ b' o( }) N
Count屬性  該屬性指出在集合中有多少個單個對象。例如:
7 M3 C2 f; K9 h" \% V; FDim numWorksheets
* [( `. x+ T! InumWorksheets=ActiveWorkbook.Worksheets.Count
- T- H+ X2 l! T( n其中,numWorksheets是一個變量,存儲ActiveWorkbook對象中Worksheet對象的數(shù)量。
  q1 u0 m8 g  J) x3 ^4 l$ f注 (1)變量在程序中定義用來記錄和存儲數(shù)據(jù)信息,并在程序后面予以使用。可由自已根據(jù)習慣命名變量名,但在使用前必須用關鍵字Dim進行聲明。(2)若一個集合為空,該集合的Count屬性值為0。
4 X9 u+ ^5 |7 QItem方法  該方法訪問集合中一個特定的對象。例如:
( A5 \3 }7 M( a8 s) PSet myWorksheet=ActiveWorkbook.WorkSheets.Item(2); X/ k( ^7 b5 [* p
括號中的數(shù)字表明你想訪問的工作表,即在Worksheets集合中的第2個Worksheet對象,并將它賦給myWorksheet變量。你也能在括號中使用變量,例如:
9 i% e! N: b) |! ]' J% a% `9 FDim numWorksheets as Long,theLastWorksheet as Object" @0 D5 o! A3 k2 ^8 |
numWorksheets=ActiveWorkbook.Worksheets.Count% t6 [- G3 r* I5 Z
Set theLastWorksheet=ActiveWorkbook.Worksheets.Item(numWorksheets)
. Q8 u) D' E( I  a* Z2 z上面的代碼首先用變量numWorksheets來存儲在Worksheets集合中Worksheet對象的數(shù)量,然后訪問最后的工作表。因此,如果工作簿中共有5個工作表,則能指定最后項目為5來訪問最后的工作表,故下面的代碼與上面代碼最后一行等價:
) c# ]" ~! B9 E1 D( OSet theLastWorksheet=ActiveWorkbook.Worksheets.Item(5), v, [+ H3 `  w) C) b" |  W
Add方法  該方法允許你向集合中添加對象。例如:1 M' d) t% s$ U8 O
Set anotherWorksheet=ActiveWorkbook.WorkSheets.Add(“Sheet6”)
% }# Z* w: {+ h/ E( C- ^" J: K如何使用Add方法取決于您想要添加項目的集合對象,在多數(shù)情況下,您能為新的對象指定一個名字,如上面代碼中的Sheet6。% f3 l- ~0 f* u/ ^
提示 變量的值不是固定的,它的值會隨程序的設置和運行而變化。
! T) _# K4 W% x) u8 c. ?% B- }( |6 Q, Y) S! w
0 Z$ D5 l( y& c+ T
If … Then … 控制語句3 L6 L  m/ b( L) q# U
有時,我們需要根據(jù)某個條件狀態(tài)去指定所需運行的代碼。例如,在“考勤記錄表”宏程序中,若您只想在周一至周五創(chuàng)建新的考勤記錄,如何控制?類似這種情形,可以使用If…Then語句控制。
2 G7 [6 W. r: X% {! w: J" XIf…Then控制語句能根據(jù)不同的條件去調(diào)用或執(zhí)行相應的程序?qū)崿F(xiàn)所需功能,其語法為:1 o# b8 u8 a9 J1 P0 A1 S
If <條件表達式> Then
& D2 q$ q. y1 O" U0 x<代碼行>
8 e. `1 D2 Y# R6 zEnd If
) D3 v" b, z) v* C& H如果條件表達式為真,則執(zhí)行代碼行。
4 l9 ~% e) r9 t  y! F) U+ e/ s, ]- F下面舉例來加深您對If…Then控制語句的認識。* `' A$ ]/ h5 K4 B
Sub IfThenStatement(). h% F/ O0 `# j+ j
      Dim numDataSheets, myWorksheet
& n6 q9 |4 s7 [" `      numDataSheets = ActiveWorkbook.Worksheets.Count
4 U0 j) ~7 V- V" L2 k4 G      If numDataSheets > 0 Then
/ M0 N# B/ l% f8 r; Q% H        Set myWorksheet = ActiveWorkbook.Worksheets.Item(numDataSheets)9 v. q! J, ?3 ?1 b
        MsgBox "最后一名同學的考勤記錄是" & myWorksheet.Name & "."$ ^' M* `- {- }* x
      End If- e( W; ]0 i8 G- f" v
      If numDataSheets = 0 Then8 P; e2 v  l  `, M6 j9 K: W
        MsgBox "無考勤記錄."
1 h5 K9 \5 x9 h! G/ }% B      End If4 ?- G+ F! e  Y9 o2 E2 ^( Z
End Sub. C$ U( _5 X" c" B" O! X# R
上述代碼運行后,將顯示一個對話框來告訴用戶最后一名同學的考勤記錄在哪個工作表上,或者工作簿中無工作表的話,將提示無考勤記錄。; I% X' D" o; h
提示 MsgBox語句可用來顯示簡單的消息框,在語句中可使用“&”符號將字符與變量相連接。+ R. G" a2 @6 D( z( s) C
再舉一個例子。如下圖3所示,根據(jù)是否選中對話框中的復選框來運行相應的程序代碼。如果沒有選中復選框,則打印該工作表;如果選中復選框,則只是保存該工作表而不進行打印操作。- |* Q, R  j$ k1 J) k2 @7 k! s

5 z1 w( Z0 g+ E$ A& Y( @$ J; n按照“使用窗體”一節(jié)中所介紹的知識建立一個窗體。其中,窗體名稱屬性設置為“測試”,Caption(標題)屬性設置為“打印或保存?”。在窗體中,有一個標簽、一個復選框和一個按鈕。“標簽”Caption(標題)屬性為“已經(jīng)創(chuàng)建了一個考勤記錄表。是否打印?”;復選框的名稱屬性為“保存”,Caption(標題)屬性為”暫不打印,先保存。”;按鈕的名稱屬性為“Ok”,Caption(標題)屬性為“確定”。程序代碼如下:/ f" @& Z& Y' w
'用戶點擊窗體上"確定"按鈕后運行,' T6 d5 j, q& d" b
'因此,使用"Ok"按鈕的Click事件
8 K, I) z. ?5 h/ \" XPrivate Sub Ok_Click()
& d$ }7 i3 |8 Y      '判斷復選框是否被選中,若選中則為真; d! W, k: U4 `% \- v4 \
      If 測試.保存.Value = True Then5 P# F, T8 j3 v% A. _% c7 d) M
        ActiveWorkbook.Save
5 B: T7 a8 h% K. t8 r& C+ G      End If' N7 q9 T0 S2 V' C. W% @6 _
      '判斷復選框是否被選中,若沒選中則為假
, X* ~+ n/ {# |  W: Q# I      If 測試.保存.Value = False Then$ P1 R9 k5 w- H; k
        ActiveWorkbook.Worksheets.PrintOut
! p1 t4 N( g6 F4 t+ U$ q2 a  t2 a9 E      End If
& ]' i% F- f$ [8 q      測試.Hide
0 U% i9 _. Y( E  x- b4 y5 E0 @. `. F& iEnd Sub+ ^1 }6 Q8 D) d8 `3 N

) N+ {" o' F4 D( W1 {" z
) A% [+ i0 z. b7 w- y4 y' X( z小結# n% b: P# S9 I$ o, L
本文僅簡略地介紹了使用Excel對象模型的一些基本概念和用法,希望能起到拋磚引玉的作用,帶您進入神奇的VBA編程,使您的工作更加有效率,也讓您的工作充滿色彩和樂趣。2 z% T6 P0 }" g4 B4 I; d' o) U
您可以使用對象瀏覽器和VBA在線幫助進一步認識Excel的集合、對象、方法、屬性、事件,也能為您在學習和使用VBA時答疑解惑。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel 中的自定義宏簡介
別怕,我是宏!VBA系列之元素篇(0基礎學員必看)
Excel資源分享:Excel VBA編程實戰(zhàn)寶典
第七篇 Excel自動化
#問題解答#Excel VBA#如何獲取工作表頁數(shù)
VBA 精彩代碼賞析之五
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 腾冲县| 融水| 济源市| 永川市| 鄂托克前旗| 同江市| 绥棱县| 科尔| 马鞍山市| 读书| 汝南县| 玛多县| 乐清市| 大邑县| 黔西| 涟水县| 昭觉县| 汉沽区| 岱山县| 永康市| 桂林市| 神木县| 武安市| 绥化市| 饶河县| 宜城市| 桂林市| 浦县| 黔西县| 班戈县| 奎屯市| 连山| 容城县| 邳州市| 靖宇县| 辽源市| 奎屯市| 建水县| 荥经县| 普定县| 华安县|