Excel VBA 編碼:使用代碼窗口

當您精通 Excel VBA 時,您將花費大量時間在代碼窗口中工作。您記錄的宏存儲在一個模塊中,您可以直接在 VBA 模塊中鍵入 Excel VBA 代碼。

最小化和最大化 VBA 代碼窗口

如果您打開了多個項目,則 VBE 在任何給定時間都可能有很多代碼窗口。

Excel VBA 編碼:使用代碼窗口

代碼窗口重載不是一個很好的景象。

代碼窗口很像 Excel 中的工作簿窗口。您可以將它們最小化、最大化、調整大小、隱藏它們、重新排列它們,等等。大多數人發現最大化他們正在處理的代碼窗口要容易得多。這樣做可以讓您看到更多代碼,並避免分心。

要最大化代碼窗口,請單擊其標題欄上的最大化按鈕(X 旁邊)。或者只需雙擊其標題欄即可將其最大化。要將代碼窗口恢復到其原始大小,請單擊“恢復”按鈕。當窗口最大化時,其標題欄不可見,因此您會在 VBE 標題欄下方找到“恢復”按鈕。

有時,您可能希望有兩個或多個代碼窗口可見。例如,您可能想要比較兩個模塊中的代碼或將代碼從一個模塊複製到另一個模塊。您可以手動排列窗口或選擇窗口 → 水平平鋪或窗口 → 垂直平鋪來自動排列它們。

您可以通過按 Ctrl+F6 在代碼窗口之間快速切換。如果您重複該組合鍵,您將繼續循環瀏覽所有打開的代碼窗口。按 Ctrl+Shift+F6 以相反的順序循環瀏覽窗口。(有關更多信息,請查看這些Excel VBA 鍵盤快捷鍵。)

最小化代碼窗口可以讓它不礙事。您還可以單擊代碼窗口標題欄上的窗口關閉按鈕(顯示 X)來關閉窗口。(關閉窗口只是隱藏它;您不會丟失任何東西。)要再次打開它,只需雙擊“項目”窗口中的相應對象。順便說一下,使用這些代碼窗口聽起來比實際困難得多。

創建 VBA 模塊

通常,Excel VBA 模塊可以包含三種類型的代碼:

  • 聲明:您提供給 VBA 的一個或多個信息聲明。例如,您可以聲明您計劃使用的變量的數據類型或設置一些其他模塊範圍的選項。聲明基本上是內務聲明。他們實際上並沒有被處決。
  • 子過程:一組編程指令,在執行時執行某些操作。
  • 函數過程:一組返回單個值的編程指令(在概念上類似於工作表函數,例如 SUM)。

單個 VBA 模塊可以存儲任意數量的 Sub 過程、Function 過程和聲明。嗯,有一個極限-大約每模塊64,000個字符。您甚至不太可能接近達到 64,000 個字符的限制。但是如果你這樣做了,解決方案很簡單:只需插入一個新模塊。

如何組織 VBA 模塊完全取決於您。有些人喜歡將應用程序的所有 VBA 代碼保存在單個 VBA 模塊中;其他人喜歡將代碼分成幾個模塊。這是個人的選擇,就像佈置家具一樣。

將 VBA 代碼放入模塊中

一個空的 VBA 模塊就像你在一些中國餐館的櫥窗裡看到的假食品;它看起來不錯,但對你來說並沒有太大作用。在你做任何有意義的事情之前,你必須在 VBA 模塊中有一些 VBA 代碼。您可以通過三種方式將 VBA 代碼放入 VBA 模塊中:

  • 直接輸入代碼。
  • 使用 Excel 宏記錄器記錄您的操作並將這些操作轉換為 VBA 代碼。
  • 從一個模塊複製代碼並將其粘貼到另一個模塊中。

直接輸入Excel VBA代碼

有時,最好的路線是最直接的路線。直接輸入代碼涉及……嗯,直接輸入代碼。換句話說,您使用鍵盤輸入代碼。在 VBA 模塊中輸入和編輯文本按您的預期工作。您可以選擇、複製、剪切、粘貼文本以及對文本執行其他操作。

使用 Tab 鍵縮進一些行以使您的代碼更易於閱讀。縮進不是必需的,但養成一個好習慣。當您學習 Excel VBA 編碼時,您將了解為什麼縮進代碼行會有所幫助。

只要您需要,一行 VBA 代碼就可以。但是,您可能希望使用行繼續符來分解冗長的代碼行。要將一行代碼(也稱為語句)從一行繼續到下一行,請以空格後跟下劃線 (_) 結束第一行。然後在下一行繼續該語句。並且不要忘記空間。前面沒有空格的下劃線字符不起作用。

這是一個將單個語句分成三行的示例:

Selection.Sort Key1:=Range("A1"), _
  Order1:=xlAscending, 標題:=xlGuess, _
  方向:=xlTopToBottom

如果在一行中輸入該語句(沒有行繼續符),它的執行方式將完全相同。請注意,該語句的第二行和第三行是縮進的。縮進是可選的,但它有助於澄清這些行不是單獨的語句這一事實。

設計 VBE 的白衣工程師預計人們會犯錯誤。因此,VBE 具有多個級別的撤消和重做。如果您刪除了不該刪除的語句,請單擊工具欄上的撤消按鈕(或按 Ctrl+Z),直到該語句再次出現。撤消後,您可以單擊重做按鈕來執行您已撤消的更改。

您準備好輸入一些真實的代碼了嗎?嘗試以下步驟:

在 Excel 中創建一個新工作簿。

按 Alt+F11 激活 VBE。

在“項目”窗口中單擊新工作簿的名稱。

選擇 Insert → Module 將 VBA 模塊插入到項目中。

在模塊中輸入以下代碼:

子猜測名稱()
Msg = "是你的名字嗎" & Application.UserName & "?"
Ans = MsgBox(Msg, vbYesNo)
如果 Ans = vbNo 那麼 MsgBox “哦,沒關係。”
If Ans = vbYes Then MsgBox "我必須通靈!"
結束子

將光標定位在您鍵入的文本內的任意位置,然後按 F5 執行該過程。

F5 是 Run → Run Sub/UserForm 的快捷方式。如果您輸入的代碼正確,Excel 將執行程序,您可以響應簡單的對話框。對話框中的文本將與此處顯示的文本不同。

Excel VBA 編碼:使用代碼窗口

GuessName 過程顯示此對話框。

當您輸入第 5 步中列出的代碼時,您可能會注意到 VBE 對您輸入的文本進行了一些調整。例如,在您鍵入 Sub 語句後,VBE 會自動插入 End Sub 語句。如果省略等號前後的空格,VBE 會為您插入空格。此外,VBE 會更改某些文本的顏色和大小寫。這一切都很正常。這只是 VBE 保持事物整潔和可讀的方式。

如果您按照前面的步驟進行操作,您只是編寫了一個 VBA Sub 過程,也稱為宏。當您按 F5 時,Excel 將執行代碼並按照說明進行操作。換句話說,Excel 會評估每個語句並執行您告訴它執行的操作。(不要讓這種新發現的能力沖昏了頭腦。)您可以多次執行這個宏——儘管幾十次後它往往會失去吸引力。

為了記錄,這個簡單的 Excel 宏使用以下概念:

  • 定義一個 Sub 過程(第一行)
  • 為變量賦值(Msg 和 Ans)
  • 連接(加入)一個字符串(使用 & 運算符)
  • 使用內置的VBA 函數(MsgBox)
  • 使用內置 VBA 常量(vbYesNo、vbNo 和 vbYes)
  • 使用 If-Then 構造(兩次)
  • Ending a Sub procedure (the last line)

Using the Excel VBA macro recorder

Another way you can get code into a VBA module is by recording your actions, using the Excel macro recorder.

By the way, there is absolutely no way you can record the GuessName procedure shown above. You can record only things that you can do directly in Excel. Displaying a message box is not in Excel’s normal repertoire. (It’s a VBA thing.) The macro recorder is useful, but in many cases, you’ll probably need to enter at least some code manually.

Here’s a step-by-step example that shows how to record a macro that inserts a new worksheet and hides all but the first ten rows and all but the first ten columns. If you want to try this example, start with a new, blank Excel workbook and follow these steps:

Activate a worksheet in the workbook.

Any Excel worksheet will do.

Click the Developer tab, and make sure that Use Relative References is not highlighted.

This macro is recorded using Absolute References.

Choose Developer → Code → Record Macro, or click the icon next to the Ready indicator on the left end of the status bar.

Excel displays its Record Macro dialog box.

In the Record Macro dialog box, name the macro TenByTen, specify that you want the macro stored in This Workbook, and press Shift+T for the shortcut key.

The macro can be executed when you press Ctrl+Shift+T.

Click OK to start recording. Excel automatically inserts a new VBA module into the project that corresponds to the active workbook.

From this point on, Excel converts your actions to VBA code. While you’re recording, the icon in the status bar turns into a small square. This is a reminder that the macro recorder is running. You can also click that icon to stop the macro recorder.

Click the New Sheet icon to the right of the last sheet tab.

Excel inserts a new worksheet.

Select the entire Column K (the 11th column) and press Ctrl+Shift+right arrow; then right-click any selected column and choose Hide from the shortcut menu.

Excel hides all of the selected columns.

Select the entire Row 11 and press Ctrl+Shift+down arrow; then right-click any selected row and choose Hide from the shortcut menu.

Excel hides all of the selected columns.

Select cell A1.

Choose Developer → Code → Stop Recording, or click the Stop Recording button on the status bar (the small square). Excel stops recording your actions.

要查看這個新錄製的宏,請按 Alt+F11 激活 VBE。在“項目”窗口中找到工作簿的名稱。您會看到該項目列出了一個新模塊。模塊的名稱取決於您開始錄製宏時工作簿中是否有任何其他模塊。如果沒有,該模塊將命名為 Module1。您可以雙擊該模塊以查看該模塊的代碼窗口。

這是您的操作生成的代碼:

子 TenByTen()
'
' TenByTen 宏
'
' 鍵盤快捷鍵:Ctrl+Shift+T
'
  Sheets.Add After:=ActiveSheet
  列(“K:K”)。選擇
  範圍(選擇,選擇。結束(xlToRight))。選擇
  Selection.EntireColumn.Hidden = True
  行(“11:11”)。選擇
  範圍(選擇,選擇。結束(xlDown))。選擇
  Selection.EntireRow.Hidden = True
  範圍(“A1”)。選擇
結束子

要試用此宏,請激活任何工作表並按下您在步驟 4 中指定的快捷鍵:Ctrl+Shift+T。

如果您沒有為宏指定快捷鍵,請不要擔心。以下是顯示所有可用宏的列表並運行所需宏的方法:

選擇開發人員 → 代碼 → 宏。鍵盤愛好者可以按 Alt+F8。

這些方法中的任何一種都會顯示一個對話框,其中列出了所有可用的宏。

選擇列表中的宏(在本例中為 TenByTen)。

單擊運行按鈕。

Excel 執行宏,您將獲得一個包含十個可見行和十個可見列的新工作表。

在宏記錄器運行時,您可以執行任意數量的命令並執行任意數量的操作。Excel 盡職盡責地將您的鼠標操作和擊鍵轉換為 VBA 代碼。

當然,您也可以在錄製後編輯宏。要測試您的新技能,請嘗試編輯宏,使其插入具有九個可見行和列的工作表 - 非常適合數獨遊戲。

複製 VBA 代碼

將代碼放入VBA 模塊的最後一種方法是從另一個模塊或其他地方(例如網站)複製它。例如,您為一個項目編寫的 Sub 或 Function 過程在另一個項目中也可能有用。您可以激活模塊並使用普通的剪貼板複製和粘貼程序,而不是浪費時間重新輸入代碼。(您可能更喜歡使用 Ctrl+C 複製和 Ctrl+V 粘貼的鍵盤快捷鍵。)將代碼粘貼到 VBA 模塊後,您可以根據需要修改代碼。

順便說一下,您會在網上找到很多 VBA 代碼示例。如果您想嘗試它們,請在瀏覽器中選擇代碼並按 Ctrl+C 進行複制。然後激活一個模塊並按 Ctrl+V 粘貼它。

當您從網站複製代碼時,有時需要進行一些修復。例如,引號字符可能是“智能引號”,它們必須轉換為簡單的引號字符。有時,長線環繞。錯誤的陳述很容易在 VBE 中發現,因為它們以紅色顯示。

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。