VBAVBA入門

Download VBA for free

備註

本節概述了vba是什麼,以及開發人員可能想要使用它的原因。

它還應該提到vba中的任何大型主題,並鏈接到相關主題。由於vba的文檔是新的,您可能需要創建這些相關主題的初始版本。

版本

Office版本發行日期備註發布日期
VBA6 ? - 2007年 [後一段時間] [1] 1992年6月30日
VBA7 2010年 - 2016年 [blog.techkit.com] [2] 2010-04-15
適用於Mac的VBA 2004年,2011年 - 2016年 2004-05-11

在Microsoft Office中訪問Visual Basic編輯器

您可以通過按Alt + F11或轉到“開發人員”選項卡並單擊“Visual Basic”按鈕,在任何Microsoft Office應用程序中打開VB編輯器。如果在功能區中未看到“開發人員”選項卡,請檢查是否已啟用此選項卡。

默認情況下,Developer選項卡被禁用。要啟用“開發人員”選項卡,請轉到“文件” - >“選項”,然後在左側列表中選擇“自定義功能區”。在右側的“自定義功能區”樹視圖中,找到“開發人員”樹項,並設置“檢查開發人員”複選框以進行檢查。單擊“確定”關閉“選項”對話框。

文件選項菜單

現在可以在功能區中看到“開發人員”選項卡,您可以在其中單擊“Visual Basic”以打開Visual Basic編輯器。或者,您可以單擊“查看代碼”以直接查看當前活動元素的代碼窗格,例如WorkSheet,Chart,Shape。

Developer Tab

VBE

您可以使用VBA自動執行幾乎所有可以交互(手動)執行的操作,還可以提供Microsoft Office中不可用的功能。 VBA可以創建文檔,向其添加文本,格式化,編輯和保存文檔,所有這些都無需人工干預。

調試

調試是一種非常強大的方法,可以仔細查看並修復錯誤的工作(或非工作)代碼。

逐步運行代碼

在調試過程中,您需要做的第一件事是在特定位置停止代碼,然後逐行運行代碼以查看是否發生了預期的情況。

  • 斷點( F9 ,調試 - 切換斷點):您可以向任何已執行的行添加斷點(例如,不對聲明),當執行到達該點時停止,並為用戶提供控制。
  • 您還可以將Stop 關鍵字添加到空行,以使代碼在運行時停止在該位置。例如,如果在聲明行之前無法使用F9添加斷點,這將非常有用
  • 步入( F8 ,調試 - 步入):只執行一行代碼,如果這是一個用戶定義的子/函數的調用,那麼它是逐行執行的。
  • 跳過( Shift + F8 ,調試 - 跳過):執行一行代碼,不進入用戶定義的子/函數。
  • 退出( Ctrl + Shift + F8 ,調試 - 退出):退出當前子/功能(運行代碼直到結束)。
  • 運行到光標( Ctrl + F8 ,調試 - 運行到光標):運行代碼,直到到達光標所在的行。
  • 您可以使用Debug.Print 在運行時將行打印到立即窗口。您也可以使用Debug.? 作為Debug.Print 的快捷方式

手錶窗口

逐行運行代碼只是第一步,我們需要了解更多細節,其中一個工具是監視窗口(View - Watch窗口),在這裡您可以看到已定義表達式的值。要將變量添加到監視窗口,請執行以下任一操作:

  • 右鍵單擊它,然後選擇“添加手錶”。
  • 在監視窗口中單擊鼠標右鍵,選擇“添加監視”。
  • 轉到調試 - 添加手錶。

添加新表達式時,您可以選擇是僅查看其值,還是在代碼執行時或在其值發生更改時中斷代碼執行。

即時窗口

即時窗口允許您通過在Print 關鍵字或單個問號“ ? ”之前執行任意代碼或打印項目。

一些例子:

  • ? ActiveSheet.Name - 返回活動工作表的名稱
  • Print ActiveSheet.Name - 返回活動工作表的名稱
  • ? foo -返回的值foo *
  • x = 10x 到10 *

*通過立即窗口獲取/設置變量值只能​​在運行時進行

調試最佳實踐

每當你的代碼沒有按預期工作時,你應該做的就是仔細閱讀它,尋找錯誤。

如果這沒有用,那就開始調試吧;對於簡短的程序,逐行執行它可能是有效的,對於較長的程序,您可能需要在觀察的表達式上設置斷點或中斷,這裡的目標是找到不按預期工作的行。

一旦你得到了給出錯誤結果的行,但原因尚不清楚,嘗試簡化表達式,或用常量替換變量,這有助於理解變量的值是否錯誤。

如果你仍然無法解決它,並尋求幫助:

  • 盡可能包含代碼的一小部分,以便了解您的問題
  • 如果問題與變量的值無關,則用常量替換它們。 (所以,而不是Sheets(a*b*c+d^2).Range(addressOfRange)Sheets(4).Range("A2")
  • 描述哪一行給出了錯誤的行為,以及它是什麼(錯誤,錯誤的結果......)

第一個模塊和Hello World

要首先開始編碼,您必須右鍵單擊左側列表中的VBA項目並添加新模塊。您的第一個Hello-World代碼可能如下所示:

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub
 

要測試它,請點擊工具欄中的Play -Button或只需按F5鍵即可。恭喜!您已經構建了自己的第一個VBA模塊。

API調用