
Excel 2010 中的 VBA 入門 ........................................................................................................... 1
1. 為什么在 Excel 2010 中使用 VBA? ............................................................................... 1
2. VBA 編程 101 ....................................................................................................................... 1
3. 宏和 Visual Basic 編輯器 ............................................................................................... 2
4. 一個實際示例 ....................................................................................................................... 5
5. 修改錄制的代碼 ................................................................................................................... 7
6. 可以使用 VBA 完成的更多任務 ....................................................................................... 10
Excel 2010 中的 VBA 入門
1. 為什么在 Excel 2010 中使用 VBA?
Microsoft Excel 2010 是一個功能相當強大的工具,您可以使用它操作、分析
和顯示數據。不過有時候,盡管標準 Excel 用戶界面 (UI) 中提供了豐富的功
能集,但您可能仍想要找到一種更簡便的方法來執行繁瑣的重復任務,或執行某
個 UI 似乎無法解決的任務。幸運的是,像 Excel 這樣的 Office 應用程序提
供了 Visual Basic for Applications (VBA)。這是一種編程語言,您可以通過
它來擴展這些應用程序。
VBA 是通過運行(在 Visual Basic 中編寫的分步過程)來工作的。學習編程
宏
可能看起來很困難,但只要多些耐心,多學習像本文中介紹的示例,許多用戶會
發現,甚至只需學會少量 VBA 代碼,就會使工作變得更加簡單,而且可以在
Office 中完成他們以前認為不可能做到的事情。一旦學會了一些 VBA,便可以
更加輕松地掌握更多的 VBA,因此,這種可能性是無限的。
迄今為止,在 Excel 中使用 VBA 最常見的原因就是自動完成重復的工作。例如,
假定您有好幾十個工作簿,每個工作簿都包含好幾十個工作表,這些工作表都需
要進行更改。這些更改既可能很簡單,例如對固定的單元格范圍應用新格式;也
可能很復雜,例如,查看每個工作表中的數據的統計特征,再選擇最恰當的圖表
類型來顯示數據和這些特征,然后創建圖表并設置相應格式。
對于上述任一種情況,您都可能不愿意手動執行這些任務,最多也就愿意重復執
行幾次。您可以改為使用 VBA 來編寫要 Excel 執行的顯式指令,從而自動完成
這些任務。
VBA 不僅僅可用于重復任務。您還可以使用 VBA 構建 Excel 的新功能(例如,
您可以開發新算法來分析數據,然后使用 Excel 中的圖表功能顯示結果),也
可以執行將 Excel 與其他 Office 應用程序(如 Microsoft Access 2010)集
成的任務。事實上,在所有 Office 應用程序中,Excel 最常用作一個類似于常
規開發平臺的工具。除了所有涉及列表和會計的顯而易見的任務之外,從數據可
視化到軟件原型制作的大量任務中,開發人員都可使用 Excel。
盡管有這么多原因要在 Excel 2010 中使用 VBA,但一定要記住,解決問題的最
佳方案可能是根本就不涉及 VBA。即使沒有 VBA,Excel 仍然提供了大量的功能,
就連高級用戶也不可能完全熟悉這些功能。在決定采用 VBA 解決方案之前,請
全面搜索“幫助”和聯機資源以確定沒有更簡單的方法。
2. VBA 編程 101
2.1. 通過代碼使應用程序執行操作
1
您可能認為編寫代碼是一項神秘而又復雜的工作,但基本原則是使用日常推理,
并且很容易掌握。Office 2010 應用程序的創建方式公開了一些名為 的內
對象
容,這些對象可以接收指令。通過向應用程序中的各種對象發送指令,可與應用
程序進行交互。這些對象數量眾多、類型各異而且使用靈活,但是它們也有局限
性。這些對象只能執行為其設計的操作,并且只按照您的指令執行操作。
2.2. 對象
在應用程序的名為 的層次結構中,編程對象彼此之間有系統地相互關
對象模型
聯。對象模型會大致反映您在用戶界面中看見的內容;例如,Excel 對象模型包
含 Application、Workbook、Sheet 和 Chart 對象以及其他很多對象。對
象模型是應用程序及其功能的概念圖。
2.3. 屬性和方法
可通過設置對象的 和調用對象的 來操作對象。設置屬性可更改對象
屬性方法
的某些性質。調用方法可使對象執行某個操作。例如,Workbook 對象具有一個
用于關閉工作簿的 Clo 方法和一個用于表示工作簿中當前活動的工作表
的 ActiveSheet 屬性。
2.4. 集合
許多對象有單復數之分,例如 Workbook 和 Workbooks;Worksheet 和
Worksheets,等等。對象的復數形式稱作。集合對象用于對集合中的多個項
集合
執行一個操作。本文稍后將介紹如何使用 Worksheets 集合來更改工作簿中每
個工作表的名稱。
3. 宏和 Visual Basic 編輯器
現在,您已對 Microsoft Excel 2010 如何公開其對象模型的方式有所了解,接
下來可以嘗試調用對象方法并設置對象屬性。為此,您必須在一個位置以 Office
可以理解的方法編寫代碼;通常使用是 Visual Basic 編輯器。盡管默認情況下
會安裝該編輯器,但在功能區中啟用該編輯器之前,許多用戶都不知道該編輯器
的存在。
3.1. “開發工具”選項卡
所有 Office 2010 應用程序都使用功能區。功能區中有一個“開發工具”選項
卡,在此可以訪問 Visual Basic 編輯器和其他開發人員工具。由于 Office 2010
在默認情況下不顯示“開發工具”選項卡,因此必須使用以下過程啟用該選項卡:
3.2. 啟用“開發工具”選項卡
1. 在“文件”選項卡上,選擇“選項”打開“Excel 選項”對話框。
2. 單擊該對話框左側的“自定義功能區”。
3. 在該對話框左側的“從下列位置選擇命令”下,選擇“常用命令”。
4. 在該對話框右側的“自定義功能區”下,選擇“主選項卡”,然后選中
“開發工具”復選框。
5. 單擊“確定”。
2
在 Excel 顯示“開發工具”選項卡之后,注意選項卡上“Visual Basic”、“宏”
和“宏安全性”按鈕的位置。
圖 1. Excel 2010 中的“開發工具”選項卡
3.3. 安全問題
單擊“宏安全性”按鈕可以指定哪些宏可以運行并需滿足哪些條件。盡管未授權
宏代碼可能會嚴重損害計算機,但阻止您運行有幫助的宏的安全條件會嚴重妨礙
您的工作效率。宏安全性是一個復雜而又涉及廣泛的話題,您應研究并了解是否
應使用 Excel 宏。
在本文中,請注意,如果當您打開一個包含宏的工作簿時,在功能區和工作表之
間出現“安全警告: 宏已被禁用”條,則可單擊“啟用內容”按鈕來啟用宏。
此外,作為一種安全措施,您不能以默認的 Excel 文件格式 (.xlsx) 保存宏;
而必須將宏保存在具有一個特殊擴展名 .xlsm 的文件中。
3.4. Visual Basic 編輯器
以下過程演示如何創建一個儲存宏的新的空白工作簿。然后,可以按 .xlsm 格
式保存該工作簿。
3.5. 創建一個新的空白工作簿
1. 單擊“開發工具”選項卡上的“宏”按鈕。
2. 在隨后出現的“宏”對話框中,在“宏名稱”下鍵入 Hello。
3. 單擊“創建”按鈕打開 Visual Basic 編輯器,其中包含已鍵入的新宏的
大綱。
VBA 是一種功能齊全的編程語言,并具有一個相應的功能齊全的編程環境。本文
只介紹那些您剛開始編程所使用的工具,而不介紹 Visual Basic 編輯器中的大
部分工具。出于這個原因,請關閉 Visual Basic 編輯器左側的“屬性”窗口,
并忽略在代碼上方顯示的兩個下拉列表。
3
圖 2. Visual Basic 編輯器
Visual Basic 編輯器包含下列代碼。
VB
Sub Hello()
End Sub
Sub子例程
代表,現在可將它定義為“宏”。運行 Hello 宏將運行 Sub
Hello() 與 End Sub 之間的任何代碼。
現在,請編輯宏,使其類似于以下代碼。
VB
Sub Hello()
MsgBox ("Hello, world!")
End Sub
返回到 Excel 中的“開發工具”選項卡,再次單擊“宏”按鈕。
在隨后出現的列表中選擇“Hello”宏,然后單擊“運行”顯示包含文本“Hello,
world!”的小型消息框。
您剛才在 Excel 中創建并實現了自定義 VBA 代碼。在消息框中單擊“確定”關
閉消息框并完成宏的運行。
如果未出現消息框,請檢查宏安全性設置并重新啟動 Excel。
3.6. 使宏可供訪問
還可以從“視圖”選項卡訪問“宏”對話框。但是,如果您頻繁使用某個宏,則
使用一個快捷方式或“快速訪問工具欄”按鈕來訪問它可能會更方便。
若要在“快速訪問工具欄”中為“Hello”宏創建一個按鈕,請使用以下過程。
以下過程描述了如何在“快速訪問工具欄”上為宏創建按鈕:
3.7. 在“快速訪問工具欄”中為宏創建按鈕
1. 單擊“文件”選項卡。
2. 單擊“選項”打開“Excel 選項”對話框,然后單擊“快速訪問工具欄”。
3. 在“從下列位置選擇命令:”下的列表中,選擇“宏”。在隨后出現的列
表中查找類似于“Book1!Hello”的文本,并選擇該文本。
4. 單擊“添加 >>”按鈕將宏添加到右側的列表中,然后單擊“修改?”按
鈕選擇與該宏關聯的按鈕圖像。
5. 單擊“確定”。現在,您應在“快速訪問工具欄”中的“文件”選項卡上
方看到新按鈕。
現在,您不必使用“開發工具”選項卡,便可隨時快速運行宏,趕快試試吧。
4
4. 一個實際示例
假定您有一個工作簿,其中的大量工作表上都包含列表,您需要更改每個工作表
的名稱,以與工作表上的列表標題相匹配。并不是每個工作表上都包含列表,但
是如果包含列表,則標題在單元格 B1 中,如果不包含列表,則單元格 B1 為空
白。不包含列表的工作表名稱應原樣保留。
通常,這可能是一個涉及以下操作的很復雜的任務:查看每一個工作表是否包含
列表,如果包含列表,則復制列表名稱,單擊工作表標簽,然后貼入新名稱。可
使用 Excel VBA 自動重新命名工作表,而不必手動執行所有上述步驟。
4.1. 了解對象
若要解決 VBA 編程問題,首先必須搞清楚代碼將操作哪些對象。可用來研究此
信息的一個基本工具是 Excel 對象模型參考,它是 Microsoft Developer
Network (MSDN) 上的 Excel 2007 開發人員參考的一部分。
在 Excel 2010 公開發布之后,這些參考材料將會針對 Excel 2010 進行更新,
但 Excel 2007 開發人員參考可適用于大部分 Excel 2010 用途。
圖 3. MSDN 上的 Excel 對象模型參考
第一步是搞清楚如何操作您完成任務需要使用的特定對象;例如,工作表、工作
表名稱、單元格和單元格內容。在 Excel 中,至少有兩種方法可以解決此問題:
?
?
直接查看對象模型參考。
錄制一些您需要自動執行的操作,查看已錄制的代碼是如何操作對象的,
然后查看對象模型參考以獲取更多信息。
根據首選方法的不同,選項也不同,但是現在,首先請嘗試使用錄制宏。
4.2. 使用錄制宏
有時,一個簡單的錄制宏就可以滿足您的全部需要;在這種情況下,您甚至不必
查看代碼。更為常見的情況是,只錄制是不夠的,它只是后續過程的一個起點。
4.3. 將錄制宏用作解決方案的起點
5
1. 錄制您需要編碼的操作。
2. 查看代碼,并找到執行這些操作的行。
3. 刪除代碼的剩余部分。
4. 修改錄制的代碼。
5. 添加錄制宏無法錄制的變量、控制結構和其他代碼。
通過錄制一個將工作表重新命名為 New Name 的宏來開始研究代碼。然后可使
用錄制的宏開發您自己的宏,使它可以基于工作表的內容重新命名多個工作表。
4.4. 錄制可重命名工作表的宏
1. 在“開發工具”選項卡上,單擊“錄制宏”。
2. 將該宏命名為 RenameWorksheets,將 Sheet1 重命名為 New Name,然
后單擊“停止錄制”。
3. 轉到“開發工具”或“視圖”選項卡,單擊“宏”按鈕,選擇“編輯”以
打開 Visual Basic 編輯器。
Visual Basic 編輯器看起來應像下面這樣。
VB
Sub RenameWorksheets()
'
' RenameWorksheets Macro
'
'
Sheets("Sheet1").Select
Sheets("Sheet1").Name = "New Name"
End Sub
Sub 行后面的前四行為注釋。任何以撇號開始的行均為注釋,對宏執行的操作
沒有任何影響。注釋的主要作用是:
?
使代碼更加便于理解,不僅方便您,而且還方便其他以后可能需要修改此
代碼的任何人。
暫時禁用代碼行(稱作)。
將代碼注釋掉
?
此錄制的宏中的四個注釋沒有起到上述的任何一個作用,因此刪除它們。
接下來的行使用 Select 方法選擇 Sheets 集合對象的 Sheet1 成員。在
VBA 代碼中,在操作對象之前通常并不需要選擇對象,即使錄制宏執行了此操作,
也同樣如此。換句話說,此行代碼是多余的,因此也可刪除它。
錄制的宏的最后一行修改 Sheets 集合的 Sheet1 成員的 Name 屬性。這是
要保留的行。
在經過更改后,現在錄制的代碼看起來應像下面這樣。
VB
Sub RenameWorksheets()
Sheets("Sheet1").Name = "New Name"
End Sub
手動將名為“New Name”的工作表改回為“Sheet1”,然后運行該宏。此名稱應
更改回“New Name”。
6
5. 修改錄制的代碼
現在來研究錄制宏使用的 Sheets 集合。對象模型參考中的“工作表”主題包
括類似下面這樣的文本。
“Sheets 集合可能包含 Chart 或 Worksheet 對象。如果您需要使用只包
含一種類型的工作表,請查看該工作表類型的對象主題。”
您現在只使用 Worksheets,因此將代碼更改為下面這樣。
VB
Sub RenameWorksheets()
Worksheets("Sheet1").Name = "New Name"
End Sub
5.1. 循環
此時的代碼有一個限制,即,它只能對一個工作表進行更改。您可以為需要重命
名的每個工作表添加對應的行,但是,如果您不知道有多少個這樣的工作表,或
者不知道這些工作表的當前名稱是什么,怎么辦?您需要一種方法對工作簿中的
每一個
工作表應用某個規則。
VBA 具有一個理想的稱為“For Each”循環的構造。For Each 循環可檢查集合
對象(例如 Worksheets)中的每一項,還可用于對這些項中的部分或全部執行
一個操作(如更改名稱)。
有關 For Each 循環的更多信息,請參閱 VBA 語言參考。單擊“Visual Basic
Conceptual Topics”(Visual Basic 概念性主題),再單擊“Using For
Next Statements”(使用 Next 語句)。請注意,VBA 語
言參考與對象模型參考一樣,可以讓您做到事半功倍,這是一個當您使用代碼遇
到困難時尋找解決方法的好地方。
使用“Using Next Statements”(使用 Next 語句)
主題中的第三個示例,編輯該宏,以便它看起來類似于下面的代碼。
VB
Sub RenameWorksheets()
For Each myWorksheet In Worksheets
= "New Name"
Next
End Sub
myWorksheet 是一個變量;也就是說,它表示的內容會發生變化。在這種情況
下,myWorksheet 變量相繼表示 Worksheets 集合中的每一個工作表。您不
一定要使用 myWorksheet;可以使用“x”、“ws”、
“WorksheetToRenameAfterTheContentsOfCellB1”或者您想要使用的幾乎任何
名稱(具有一些限制)。一個很好的準則就是,使用的變量名稱的長度足以提醒
您變量代表的內容,但也不要太長以致造成代碼混亂不堪。
如果此時運行該宏,它會發生錯誤,因為 Excel 要求工作簿中的每一個工作表
具有唯一名稱,但下一行代碼指示 Excel 為每個工作表賦予相同的名稱。
VB
= "New Name"
若要更正此行以便您可以確認 For Each 循環能正常運行,應將此行做如下更改。
VB
7
= & "-changed"
此行會將每個工作表的當前名稱 () 更改為在當前名稱后面
追加“-changed”,而不是嘗試為每個工作表賦予相同的名稱。
5.2. 有用的重命名
現在,該宏正在接近于實際解決手頭的問題。現在您需要一種方法來從工作表本
身獲取信息,具體而言,就是從每個工作表的 B1 單元格獲取信息,然后將獲取
信息放入到工作表名稱中。
這一次,不再使用錄制宏來搞清楚如何引用某個單元格,猜猜看,使用 Cell 對
象是否可行。這個想法很好,不過,如果您打開對象模型參考并搜索 Cell 對象,
就會發現根本沒有 Cell 對象!但是有一個 CellFormat 對象(該鏈接可能指
向英文頁面)。
CellFormat 對象主題在第一個代碼示例中包括下面的代碼。
VB
' Set the interior of cell A1 to yellow.
Range("A1").Select
此代碼表明,您使用 Range 指定單元格區域或僅指定一個單元格。同樣,您
不需要 .Select 部分,但需要搞清楚如何引用 Range 對象的內容
(與 Range 對象本身相對)。如果您查看 Range 對象主題,則會了解
到 Range 同時具有 Methods 和 Properties。Range 的內容是一個事物,
而不是一個操作,因此,它很可能是一個 Property。如果向下翻看列表,則會
看到 Value 屬性。因此,請嘗試以下代碼。
VB
Sub RenameWorksheets()
For Each myWorksheet In Worksheets
= ("B1").Value
Next
End Sub
如果您對包含 B1 為空的工作表的工作簿運行此代碼,則會發生錯誤,因為空
的 Range 具有一個 "" 值(一個空文本字符串),這不是合法的工作表名稱。
現在差不多該創建一些示例數據了。在工作簿中創建三個與下圖類似的工作表,
然后運行該宏。
圖 4. RenameWorksheets 宏的示例數據
8
工作表名稱應會相應地進行更改。
5.3. 檢查空單元格
如上文所述,工作簿中任何 B1 單元格為空,則該宏會失敗。不用手動檢查每個
工作表,可對該宏進行編碼來執行此操作。在 行之前添加
下面的代碼行。
VB
If ("B1").Value <> "" Then
并且在 行之后添加下面的文本。
VB
End If
這稱作“If?Then”語句。If?Then 語句指示 Excel:只要滿足 If 行中的條
件,就執行 If 行和 End If 行之間的行上的任何操作。此示例中,下面的行指
定要滿足的條件。
VB
("B1").Value <> ""
<> 表示“不等于”,而中間沒有任何內容的雙引號表示一個空文本字符串;也
就是說,無任何文本。因此,只有在 B1 單元格中的值不等于空(即,B1 單元
格中有文本)時,才會執行 If 和 End If 之間的任何代碼行。
有關 If?Then 語句的更多信息,請參閱 VBA 語言參考。(全稱為
“If?Then?El 語句”,其中 是可選組件。)
El
5.4. 變量聲明
應對該宏所做的另一個改進是在該宏的開頭放置一個 myWorksheet 變量聲明。
VB
Dim myWorksheet As Worksheet
Dim 是“Dimension”的簡寫,Worksheet 是此特定變量的類型。此語句告訴
VBA myWorksheet 表示的實體類型。注意,當您鍵入 As 之后,Visual Basic
編輯器會顯示一個彈出列表,其中列出了所有可用的變量類型。這是
IntelliSen 技術的一個示例;即,Visual Basic 編輯器會對它確定您嘗試要
執行的操作做出響應,并提供適用選項的列表。您可以從列表中選擇一個選項,
或者繼續鍵入。
9
盡管 VBA 中并不要求變量聲明,但還是強烈推薦使用!通過變量聲明,可以更
容易地跟蹤您的變量以及代碼中的錯誤。此外需注意,如果您聲明一個帶有對象
類型(如 Worksheet)的變量,而且您稍后在該宏中使用該對象變量,則
IntelliSen 會顯示與該對象相關的屬性和方法的適當列表。
5.5. 注釋
現在該宏已經很復雜,可以包含一些注釋來提醒您代碼執行的操作。使用的注釋
數量部分地取決于個人風格,但通常而言,注釋多比注釋少好。隨著時間的推移,
通常需要修改和更新代碼。如果沒有注釋,則可能很難理解代碼的意圖,尤其是
在修改代碼的人不是當初編寫代碼的人的情況下。為 If 條件和重命名工作表的
行添加注釋,得到的代碼應如下所示。
VB
Sub RenameWorksheets()
Dim myWorksheet As Worksheet
For Each myWorksheet In Worksheets
'make sure that cell B1 is not empty
If ("B1").Value <> "" Then
'rename the worksheet to the contents of cell B1
= ("B1").Value
End If
Next
End Sub
為了測試該宏,將工作表重命名回 Sheet1、Sheet2 和 Sheet3,在一個或多
個工作表中刪除單元格 B1 的內容。運行該宏,驗證它是否重命名單元格 B1 中
有文本的工作表,并且保留其他工作表的名稱不變。該宏適用于任何數量的、混
合了已填充的 B1 單元格與空的 B1 單元格的工作表。
6. 可以使用 VBA 完成的更多任務
本節介紹在 Excel 2010 中可以使用 VBA 完成的更多任務。本節中的示例旨在
讓您了解 VBA 的功能,而不是重點介紹特定的實際應用場景。您可能會發現,
在演練這些示例時,在對象模型參考中查看每一步操作中的對象的信息會很有用。
6.1. 樂于學習的態度的重要性
學習一般的編程(具體為 Excel VBA)的一個好方法就是采用一種策略,嘗試新
的內容,努力搞懂它,然后問自己一些問題,例如:
?
?
?
?
接下來我可以嘗試點什么?
如果我想要使用 VBA,我首先要學習什么?
有哪些我想知道的好玩或有趣的內容?
我對哪些內容感到好奇?
強烈建議讀者探索通向開啟知識大門的道路。
10
6.2. 圖表
Excel 中的一個常見任務是基于一個單元格區域創建圖表。創建一個名
為 AssortedTasks 的新宏,然后在 Visual Basic 編輯器中鍵入以下文本。
VB
Dim myChart As ChartObject
添加一行以創建圖表對象,并將 myChart 變量分配給它。
VB
Set myChart = (100, 50, 200, 200)
括號中的數字決定圖表的位置和大小。前兩個數字是圖表左上角的坐標,后面的
兩個數字是寬度和高度。
新建一個空的工作表,并運行該宏。該宏創建的圖表中沒有數據,因此沒有用。
刪除您剛剛創建的圖表,將以下幾行添加到該宏的末尾。
VB
With myChart
.rceData Source:=Selection
End With
這是 VBA 編程中的一個常用模式。首先,創建一個對象,將其分配給一個變量,
然后使用 With?End With 構造來對該對象執行操作。示例代碼指示圖表使用當
前選擇內容作為其數據。(Selection 是 SetSourceData 方法
的 參數的值,而不是某個對象屬性的值,因此,VBA 語法要求您使用
Source
冒號和等于號 (:=) 替代一個等于號 (=) 來賦值。)
在單元格 A1:A5 中鍵入一些數字,選擇這些單元格,然后運行該宏。圖表將按
默認類型(條形圖)顯示。
圖 5. 使用 VBA 創建的條形圖
如果您不喜歡條形圖,則可以使用與下面類似的代碼,將條形圖更改為某種其他
類型的圖表。
VB
With myChart
.rceData Source:=Selection
.ype = xlPie
End With
11
xlPie
是內置常數(也稱為“枚舉常數”)的一個示例。Excel 中有很多這樣
的常數,并且這些常數已經被詳盡地記錄下來。有關內置常數的更多信息,請參
閱對象模型參考的“Enumerations”(枚舉)部分。例如,圖表類型的常數將會
在“XlChartType Enumeration”(XlChartType 枚舉)下列出。
您可以修改數據。例如,嘗試將此行添加到變量聲明的后面。
VB
("a4").Value = 8
可以從用戶獲取輸入,并使用該輸入修改數據。
VB
myInput = InputBox("Plea type a number:")
("a5").Value = myInput
最后,將下面的行添加到該宏的末尾。
VB
現在,完整的宏看起來應像下面這樣。
VB
Sub AssortedTasks()
Dim myChart As ChartObject
("a4").Value = 8
myInput = InputBox("Plea type a number:")
("a5").Value = myInput
Set myChart = (100, 50, 200, 200)
With myChart
.rceData Source:=Selection
.ype = xlPie
End With
End Sub
驗證單元格 A1:A5 是否仍然為選中狀態,運行該宏,在輸入框中鍵入一個數字,
然后單擊“確定”。此代碼將保存并關閉工作簿。重新打開工作簿,并注意對餅
圖的更改。
6.3. 用戶窗體
前一節演示了如何使用一個簡單的輸入框獲取用戶的輸入。除了顯示信息的相應
消息框之外,VBA 還提供了大量功能,以便您可以用來創建自定義對話框,對直
接放置在工作表上的控件進行編碼,或者操作 Excel 中內置的對話框。有關這
些功能的更多信息,請參閱 Excel 2007 開發人員參考中的控件、對話框和窗體。
本節快速介紹一下用戶窗體,至此便完成對 Excel VBA 的簡單介紹。
在“開發工具”選項卡上,單擊“Visual Basic”按鈕以打開 Visual Basic 編
輯器,然后轉到“插入”菜單,選擇“用戶窗體”以打開“用戶窗體設計視圖”。
您將看見兩個窗口。一個窗口表示您創建的用戶窗體,另一個窗口就是“工具
箱”,其中顯示您可以添加到用戶窗體中的各種控件。例如,命令按鈕、選項按
12
鈕、復選框等等。可將鼠標移動到“工具箱”控件的上方,查看它創建的是哪種
控件。
創建一個非常簡單的用戶窗體,其中包含一個可運行本文前面所述的 Hello 宏
的按鈕。在“工具箱”中,按下 CommandButton 控件,然后將其拖動到用戶
窗體來創建一個命令按鈕。右鍵單擊該命令按鈕,選擇“查看代碼”。
您看到的 Sub 是一個 的主干。在發生特定事件時將會運行事件過
事件過程
程。在此例中,正如 Sub 的名稱所示,運行代碼的事件為 CommandButton1 上
的 Click。將下面一行添加到事件過程中。
VB
Run("Hello")
現在 Visual Basic 編輯器應看起來像下面這樣。
圖 6. CommandButton1_Click 事件過程
保存工作簿,轉到“窗口”菜單,選擇“UrForm1 (用戶窗體)”,以重新顯示
用戶窗體。單擊工具欄上的綠色箭頭運行用戶窗體。在對話框出現后,單擊命令
按鈕以運行 Hello 宏,這將顯示“Hello, world!”消息框。關閉該消息框以返
回到正在運行的用戶窗體,然后關閉正在運行的用戶窗體以返回到“設計視圖”。
13

本文發布于:2023-11-22 23:31:19,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1700667080223521.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:基于excel 2010 的vba教程.doc
本文 PDF 下載地址:基于excel 2010 的vba教程.pdf
| 留言與評論(共有 0 條評論) |