VBA從入門到精通_第1頁
VBA從入門到精通_第2頁
VBA從入門到精通_第3頁
VBA從入門到精通_第4頁
VBA從入門到精通_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、單元格的引用Sub sel()Dim rng As Range 定義變量類型Set rng = Range("A2:D4, d5:e8") 給rng賦值 。rng.Select 選定變量 改變單元格(變量)顏色為紅色Set rng = nothingEnd Sub此程序可以在excel中的selection區(qū)域內(nèi)求和。本例要點為IsNumeric語句的使用。Isnmeric語句為邏輯判斷語句,如果isnmeric () 括號中為數(shù)字,則邏輯真,否者邏輯假!Sub 區(qū)域求和()Dim rDim t As SingleFor Each r In Selection If IsN

2、umeric(r.Value) Then t = t + r.ValueEnd If Next MsgBox "所選區(qū)域之和為" & tEnd Sub工作簿和工作表操作方法:創(chuàng)建工作簿 要在 Visual Basic 中創(chuàng)建工作簿,請使用 Add 方法。以下過程將創(chuàng)建一個工作簿。Microsoft Excel 會自動將該工作簿命名為“BookN”,其中“N”是下一個可用的數(shù)字。新工作簿將成為活動工作簿。Sub AddOne() Workbooks.AddEnd Sub 創(chuàng)建工作簿的一種更好的方式是將其分配給一個對象變量。在下例中,由 Add 方法返回的 Workbo

3、ok 對象分配給了對象變量 newBook。然后,又設置了 newBook 的若干屬性。通過使用對象變量可以輕松地控制新工作簿。Sub AddNew()Set NewBook = Workbooks.Add With NewBook .Title = "All Sales" .Subject = "Sales" .SaveAs Filename:="Allsales.xls" End WithEnd Sub操作方法:引用多張工作表 可用 Array 函數(shù)標識一組工作表。以下示例選定了活動工作簿中的三張工作表。Sub Several()

4、 Worksheets(Array("Sheet1", "Sheet2", "Sheet4").SelectEnd Sub操作方法:通過索引號引用工作表 索引號是基于工作表標簽在同一類型的工作表中的位置(按從左到右的方式計數(shù))分配給工作表的序號。下面的過程使用 Worksheets 屬性激活活動工作簿中的第一個工作表。Sub FirstOne() Worksheets(1).ActivateEnd Sub 如果要處理所有類型的工作表(工作表、圖表、模塊和對話框編輯表),可使用 Sheets 屬性。以下過程激活工作簿中的第四張工作表。S

5、ub FourthOne() Sheets(4).ActivateEnd Sub如果移動、添加或刪除工作表,索引順序可能會發(fā)生變化。操作方法:通過名稱引用工作表 使用 Worksheets 屬性和 Charts 屬性可通過名稱來標識工作表。下述語句激活活動工作簿中的不同工作表。Worksheets("Sheet1").ActivateCharts("Chart1").Activate DialogSheets("Dialog1").Activate 可以使用 Sheets 屬性返回工作表、圖表、模塊或?qū)υ捒蚬ぷ鞅?。Sheets 集合包

6、含所有這些種類的工作表。以下示例將激活活動工作簿中名為“Chart1”的工作表。Sub ActivateChart() Sheets("Chart1").ActivateEnd Sub 注釋 嵌入到工作表中的圖表是 ChartObjects 集合的成員,而那些位于單獨的工作表上的圖表則屬于 Charts 集合。單元格和區(qū)域操作方法:引用工作表上的所有單元格 如果對工作表應用 Cells 屬性時不指定索引號,該方法將返回代表工作表上所有單元格的 Range 對象。以下 Sub 過程清除活動工作簿中 Sheet1 上的所有單元格的內(nèi)容。Sub ClearSheet() Work

7、sheets("Sheet1").Cells.ClearContentsEnd Sub操作方法:使用 A1 表示法引用單元格和區(qū)域可使用 Range 屬性引用 A1 引用樣式中的單元格或單元格區(qū)域。下述子例程將單元格區(qū)域 A1:D5 的字體設置為加粗。Sub FormatRange() Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _ .Font.Bold = TrueEnd Sub下表演示了使用 Range 屬性的一些 A1 樣式引用。引用含義Range(&

8、quot;A1")單元格 A1Range("A1:B5")從單元格 A1 到單元格 B5 的區(qū)域Range("C5:D9,G9:H16")多塊選定區(qū)域Range("A:A")A 列Range("1:1")第一行Range("A:C")從 A 列到 C 列的區(qū)域Range("1:5")從第一行到第五行的區(qū)域Range("1:1,3:3,8:8")第 1、3 和 8 行Range("A:A,C:C,F:F")A 、C 和 F 列操

9、作方法:引用行和列可用 Rows 屬性或 Columns 屬性來處理整行或整列。這兩個屬性返回代表單元格區(qū)域的 Range 對象。在下例中,Rows(1) 返回 Sheet1 上的第一行,然后將區(qū)域的 Font 對象的 Bold 屬性設置為 True。Sub RowBold() Worksheets("Sheet1").Rows(1).Font.Bold = TrueEnd Sub下表舉例說明了使用 Rows 和 Columns 屬性的一些行和列的引用。引用含義Rows(1)第一行Rows工作表上所有的行Columns(1)第一列Columns("A")

10、第一列Columns工作表上所有的列若要同時處理若干行或列,請創(chuàng)建一個對象變量并使用 Union 方法,將對 Rows 屬性或 Columns 屬性的多個調(diào)用組合起來。下例將活動工作簿中第一張工作表上的第一行、第三行和第五行的字體設置為加粗。Sub SeveralRows() Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5) myUnion.Font.Bold = TrueEnd Sub操作方法:使用索引號引用單元格通過使用行列索引

11、號,可用 Cells 屬性引用單個單元格。該屬性返回代表單個單元格的 Range 對象。在下例中,Cells(6,1) 返回 Sheet1 上的單元格 A6,然后將 Value 屬性設置為 10。Sub EnterValue() Worksheets("Sheet1").Cells(6, 1).Value = 10End Sub因為可用變量替代編號,所以 Cells 屬性非常適合于在單元格區(qū)域中循環(huán),如下例中所示。Sub CycleThrough() Dim Counter As Integer For Counter = 1 To 20 Worksheets("

12、Sheet1").Cells(Counter, 3).Value = Counter Next CounterEnd Sub  注釋如果要同時更改某個區(qū)域中所有單元格的屬性(或?qū)⒎椒☉糜谠搮^(qū)域中的所有單元格),請使用 Range 屬性。操作方法:使用快捷表示法引用單元格可用方括號將 A1 引用樣式或命名區(qū)域括起來,作為 Range 屬性的快捷方式。這樣就不必鍵入單詞“Range”或使用引號了,如下例中所示。Sub ClearRange() Worksheets("Sheet1").A1:B5.ClearContentsEnd SubSub S

13、etValue() MyRange.Value = 30End Sub操作方法:引用相對于其他單元格的單元格以相對于另一個單元格的方式處理某一單元格的常用方法是使用 Offset 屬性。在下例中,將位于活動工作表上活動單元格下一行和右邊三列的單元格的內(nèi)容設置為帶雙下劃線。Sub Underline() ActiveCell.Offset(1, 3).Font.Underline = xlDoubleEnd Sub  注釋可錄制使用 Offset 屬性指定相對引用(而不是絕對引用)的宏。若要這樣做,請在“開發(fā)工具”選項卡上單擊“使用相對引用”,然后單擊“錄制宏”。若要在單元格

14、區(qū)域中循環(huán),請在循環(huán)中將變量與 Cells 屬性一起使用。本示例以 5 為步長,用 5 到 100 之間的值填充第三列的前 20 個單元格。變量 counter 用作 Cells 屬性的行索引。Sub CycleThrough() Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter * 5 Next counterEnd Sub操作方法:使用 Range 對象引用單元格如果將對象變量設置為 Range 對象,即可用變量名輕松地操

15、作單元格區(qū)域。以下過程將創(chuàng)建對象變量 myRange,然后將活動工作簿中 Sheet1 上的區(qū)域 A1:D5 賦予該變量。隨后的語句用該變量名稱代替 Range 對象,以修改該區(qū)域的屬性。Sub Random() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = TrueEnd Sub操作方法:引用命名區(qū)域用名稱比用 A1 樣式記號更容易標識單元格區(qū)

16、域。若要命名選定的單元格區(qū)域,請單擊編輯欄左端的名稱框,鍵入名稱,再按 Enter。引用命名區(qū)域以下示例引用名為“MyBook.xls”的工作簿中名為“MyRange”的區(qū)域。Sub FormatRange() Range("MyBook.xls!MyRange").Font.Italic = TrueEnd Sub以下示例引用名為“Report.xls”的工作簿中特定于工作表的區(qū)域“Sheet1!Sales”。Sub FormatSales() Range("Report.xlsSheet1!Sales").BorderAround Weight:=x

17、lthinEnd Sub要選定命名區(qū)域,請使用 GoTo 方法,該方法將激活工作簿和工作表,然后選定該區(qū)域。Sub ClearRange() Application.Goto Reference:="MyBook.xls!MyRange" Selection.ClearContentsEnd Sub以下示例顯示對于活動工作簿將如何編寫相同的過程。Sub ClearRange() Application.Goto Reference:="MyRange" Selection.ClearContentsEnd Sub在命名區(qū)域中的單元格上循環(huán)以下示例使用 F

18、or Each.Next 循環(huán)語句在命名區(qū)域中的每一個單元格中循環(huán)。如果該區(qū)域中的任一單元格的值超過 Limit 的值,則該單元格的顏色會變?yōu)辄S色。Sub ApplyColor() Const Limit As Integer = 25 For Each c In Range("MyRange") If c.Value > Limit Then c.Interior.ColorIndex = 27 End If Next cEnd Sub操作方法:引用多個區(qū)域如果使用適當?shù)姆椒?,可以輕松引用多個區(qū)域。使用 Range 和 Union 方法可引用任意區(qū)域組合;使用 Ar

19、eas 屬性可引用工作表上一組選定的區(qū)域。使用 Range 屬性通過在兩個或多個引用之間插入逗號,可使用 Range 屬性引用多個區(qū)域。以下示例清除了 Sheet1 上三個區(qū)域的內(nèi)容。Sub ClearRanges() Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _ ClearContentsEnd Sub命名區(qū)域使得用 Range 屬性處理多個區(qū)域更加容易。以下示例可在所有這三個命名區(qū)域處于同一工作表時運行。Sub ClearNamed() Range("MyRange, YourR

20、ange, HisRange").ClearContentsEnd Sub使用 Union 方法使用 Union 方法可將多個區(qū)域組合到一個 Range 對象中。以下示例創(chuàng)建了名為 myMultipleRange 的 Range 對象,并將其定義為區(qū)域 A1:B2 和 C3:D4 的組合,然后將該組合區(qū)域的字體設置為加粗。Sub MultipleRange() Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets

21、("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = TrueEnd Sub使用 Areas 屬性可用 Areas 屬性引用選定的單元格區(qū)域或多塊選定區(qū)域中的區(qū)域集合。下述過程計算選定區(qū)域中的塊數(shù)目,如果有多個塊,就顯示一則警告消息。Sub FindMultiple() If Selection.Areas.Count > 1 Then MsgBox "Cannot do this to a multiple se

22、lection." End IfEnd Sub控件、對話框和窗體操作方法:向文檔中添加控件若要向文檔中添加控件,請顯示“控件工具箱”,再單擊要添加的控件,然后單擊文檔。拖動控件的調(diào)整控點直到控件的輪廓大小和形狀符合要求。  注釋將一個控件(或一組控件)從窗體拖回“控件工具箱”,即可創(chuàng)建一個可重復使用的控件模板。這是一項非常有用的功能,能實現(xiàn)應用程序的標準界面。操作方法:向用戶窗體中添加控件要向用戶窗體中添加控件,請在“工具箱”中找到要添加的控件,將該控件拖到窗體上,然后拖動控件的調(diào)整控點,直到控件的輪廓大小和形狀符合要求。  注釋將一個控件(或

23、多個“組合”的控件)從窗體拖回“工具箱”,即可創(chuàng)建一個可重復使用的控件模板。這是一項非常有用的功能,能實現(xiàn)應用程序的標準界面。向窗體中添加了控件后,可使用 Visual Basic 編輯器中“格式”菜單上的命令調(diào)整控件的對齊方式和間距。操作方法:創(chuàng)建用戶窗體要創(chuàng)建自定義對話框,必須創(chuàng)建用戶窗體。要創(chuàng)建用戶窗體,請單擊“Visual Basic 編輯器”中“插入”菜單上的“用戶窗體”??墒褂谩皩傩浴贝翱诟拇绑w的名稱、行為和外觀。例如,要更改窗體的標題,可設置 Caption 屬性。操作方法:向用戶窗體中添加控件要向用戶窗體中添加控件,請在“工具箱”中找到要添加的控件,將該控件拖到窗體上,然后拖

24、動控件的調(diào)整控點,直到控件的輪廓大小和形狀符合要求。  注釋將一個控件(或多個“組合”的控件)從窗體拖回“工具箱”,即可創(chuàng)建一個可重復使用的控件模板。這是一項非常有用的功能,能實現(xiàn)應用程序的標準界面。向窗體中添加了控件后,可使用 Visual Basic 編輯器中“格式”菜單上的命令調(diào)整控件的對齊方式和間距。設置控件屬性可以在設計時(即宏運行之前)設置某些控件屬性。在設計模式下,右鍵單擊某一控件,然后單擊“屬性”顯示屬性窗口。屬性名稱顯示在該窗口的左列中,屬性的值顯示在右列中。在屬性名稱的右邊輸入新值可以設置屬性的值。初始化控件屬性可通過使用宏中的 Visual Basic

25、 代碼,在運行時初始化控件。例如,可填充列表框、設置文本值或設置選項按鈕。以下示例使用 AddItem 方法向列表框中添加數(shù)據(jù)。然后它設置文本框的值并顯示窗體。Private Sub GetUserName() With UserForm1 .lstRegions.AddItem "North" .lstRegions.AddItem "South" .lstRegions.AddItem "East" .lstRegions.AddItem "West" .txtSalesPersonID.Text = &quo

26、t;00000" .Show ' . End WithEnd Sub還可以在窗體的 Initialize 事件中用代碼設置窗體上控件的初始值。在 Initialize 事件中設置控件的初始值的好處在于:初始化代碼與窗體存儲在一起。您可以將該窗體復制到其他項目中,這樣,當運行 Show 方法來顯示對話框時,將初始化其中的控件。Private Sub UserForm_Initialize() UserForm1.lstNames.AddItem "Test One" UserForm1.lstNames.AddItem "Test Two"

27、; UserForm1.txtUserName.Text = "Default Name"End Sub控件和對話框事件將控件添加到對話框或文檔后,再添加事件過程以確定控件如何響應用戶操作。用戶窗體和控件均擁有一組預定義事件。例如,某命令按鈕擁有 Click 事件,該事件將在用戶單擊此命令按鈕時發(fā)生,用戶窗體擁有 Initialize 事件,該事件將在加載窗體時運行。若要編寫控件或窗體事件過程,請雙擊窗體或控件打開模塊,然后從“過程”下拉列表框中選擇相應事件。事件過程包含控件的名稱。例如,命令按鈕 Command1 的 Click 事件過程的名稱為 Command1_Cli

28、ck。如果為事件過程添加代碼后更改該控件的名稱,這些代碼仍保留使用原名稱的過程中。例如,假設在 Commmand1 的 Click 事件中添加代碼,然后將該控件重命名為 Command2。雙擊 Command2 時,在 Click 事件過程中看不到任何代碼。您需要將 Command1_Click 中的代碼移到 Command2_Click 中。為了簡化開發(fā)過程,最好在編寫代碼之前命名控件。顯示自定義對話框若要在 Visual Basic 編輯器中測試對話框,請在 Visual Basic 編輯器的“運行”菜單上單擊“運行子過程/用戶窗體”。若要用 Visual Basic 代碼顯示對話框,請使用 Show 方法。下例顯示了名為“UserForm1”的對話框。Private Sub GetUserName() UserForm1.ShowEnd Sub代碼運行時使用控件值可在運行 Visual Basic 代碼時設置和返回某些控件屬性。下列示例將文本框的 Text 屬性設為“Hello”。TextBox1.Text = "Hello"關閉窗體時,用戶在窗體中輸入的數(shù)據(jù)將丟失。如果在卸載窗體后返回其中控件的值,則得到的是控件的初始值而非用戶輸入的值。如果要保存在窗體中輸

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論