小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Office VBA 入門 | Microsoft Learn

 nxhujiee 2023-05-17 發(fā)布于寧夏

Office VBA 入門

  • 文章

你是否面臨著重復清理 Word 中五十個表格的工作? 你是否希望有一個特殊的文檔能夠在打開時提示用戶進行輸入? 你是否感覺難以弄明白如何將 Microsoft Outlook 中獲取的聯(lián)系人有效地導入 Microsoft Excel 電子表格?

可以使用 Visual Basic for Applications (VBA) for Office 來執(zhí)行這些任務并完成更多任務,這是一種簡單但功能強大的編程語言,可用于擴展 Office 應用程序。

本文適用于希望了解 VBA 和希望深入了解編程如何幫助他們自定義 Office 的有經驗的 Office 用戶。

Office 應用程序套件具有一組豐富的功能。 可通過多種不同的方法對文檔、電子郵件、數(shù)據(jù)庫、表單、電子表格和演示文稿進行創(chuàng)作、格式設置和操縱。 Office VBA 編程的杰出之處在于,你可以使用鼠標、鍵盤或對話框執(zhí)行的幾乎每一個操作也都可以使用 VBA 完成。 此外,若某個操作可以使用 VBA 執(zhí)行一次,則可以同樣輕松地執(zhí)行該操作一百次。 (實際上,自動執(zhí)行重復任務是 Office VBA 最常見的用途之一。)

除了可通過編寫 VBA 腳本來加速執(zhí)行日常任務外,還可以使用 VBA 為 Office 應用程序添加新功能,或以特定于業(yè)務需要的方式來提示文檔用戶并與之交互。 例如,可以編寫一些 VBA 代碼,使其在用戶首次嘗試保存文檔時顯示一個彈出消息,提醒用戶將文檔保存到特定網絡驅動器上。

本文探討了一些利用 VBA 編程強大功能的主要原因。 它探討了 VBA 語言和可用于處理你的解決方案的開箱即用工具。 最后,它包括一些提示和方法以避免一些常見編程錯誤。

備注

有興趣開發(fā)跨多個平臺擴展 Office 體驗的解決方案嗎? 查看新的 Office 外接程序模型。 與VSTO外接程序和解決方案相比,Office外接程序占用的空間較小,您可以使用幾乎任何Web編程技術(例如HTML5,JavaScript,CSS3和XML)來構建它們。

何時使用 VBA 及使用原因

考慮使用 Office 中的 VBA 編程功能有若干主要原因。

自動化和重復

當應用到用于設置格式或糾正問題的重復性解決方案時,VBA 非常高效。 舉例來說,你是否曾經在 Word 中更改過每一頁頂部的段落樣式? 你是否曾經不得不對從 Excel 粘貼到 Word 文檔或 Outlook 電子郵件中的多個表格重新設置格式? 你是否曾經必須對多個 Outlook 聯(lián)系人進行相同的更改?

如果你有必須進行十多二十次的更改,則可能值得使用 VBA 來自動進行該更改。 如果是必須進行數(shù)百次的更改,那么當然值得考慮。 你可手動完成的幾乎任何格式設置或編輯更改都可用 VBA 完成。

用戶交互的擴展

有時,你希望鼓勵或強迫用戶以不屬于標準應用程序的特定方式與 Office 應用程序或文檔進行交互。 例如,你可能希望在用戶打開、保存或打印文檔時,提示他們執(zhí)行一些特定操作。

Office 應用程序之間的交互

你是否需要將所有聯(lián)系人從 Outlook 復制到 Word,然后以特定方式其進行格式設置? 或者,你是否需要將數(shù)據(jù)從 Excel 移到一組 PowerPoint 幻燈片? 有時,簡單的復制和粘貼不能達到你的目的,或者速度太慢。 使用 VBA 編程同時與兩個或更多 Office 應用程序的詳細信息交互,然后根據(jù)一個應用程序中的內容修改另一個應用程序中的內容。

換另一種方式執(zhí)行任務

VBA 編程是一種功能強大的解決方案,但并不總是最佳方法。 有時,有必要使用其他方式來實現(xiàn)你的目標。

關鍵問題是,是否有更簡單的方法。 開始 VBA 工程之前,請考慮內置的工具和標準功能。 舉例來說,如果你有非常耗時的編輯或布局任務,請考慮使用樣式或加速鍵來解決問題。 你是否能執(zhí)行一次任務,然后使用 CTRL+Y(重做)來重復操作? 你是否能使用正確的格式或模板創(chuàng)建新文檔,然后將內容復制到該新文檔中?

Office 應用程序功能強大;你需要的解決方案可能已經存在。 在開始編程之前,請花一些時間來詳細了解 Office。

在開始 VBA 工程之前,請確保你有時間來使用 VBA。 編程需要專注,并且不可預測。 特別是作為初學者,除非你有時間來仔細認真地工作,否則絕不要轉向編程。 如果迫在眉睫的最后期限可能會造成非常緊張的情況,請嘗試編寫“快速腳本”來解決問題。 如果你的時間很緊,則可能需要使用傳統(tǒng)方法,即使這些方法單調又重復。

VBA 編程 101

通過代碼使應用程序執(zhí)行操作

你可能認為編寫代碼既神秘又困難,但是基本原則使用日常推理且完全可以訪問。 Microsoft Office 應用程序以這樣的方式創(chuàng)建:它們公開能夠接收指令的事物(稱為對象),這與將電話設計為包含按鍵以用于和電話交互的方式相同。 按下按鍵時,電話會識別指令,并按照撥號順序包含對應的號碼。 在編程時,你通過向應用程序中的各種對象發(fā)送指令與應用程序進行交互。 這些對象是可擴展的,但各有各的限制。 這些對象只能執(zhí)行為其設計的操作,并且只能按照你的指令執(zhí)行操作。

例如,假設用戶在 Word 中打開一個文檔,進行一些更改,保存文檔,然后將其關閉。 在 VBA 編程領域,Word 會公開 Document 對象。 通過使用 VBA 代碼,你可以指示 Document 對象執(zhí)行諸如打開、保存或關閉等操作。

下面一節(jié)討論如何組織和描述對象。

對象模型

開發(fā)人員在層次結構中組織編程對象,該層次結構被稱為應用程序的對象模型。 例如,Word 具有包含 Document 對象的頂級應用程序對象。 Document 對象包含 Paragraph 對象等。 對象模型大致反映你在用戶界面中看到的內容。 它們是應用程序及其功能的概念圖。

對象的定義被稱為類,因此,你可能看到這兩個術語互換使用。 從技術上來講,類是用于創(chuàng)建或實例化對象的說明或模板。

對象一旦存在,你就可以通過設置其屬性和調用其方法來進行操控。 如果將對象視為一個名詞,則屬性是描述該名詞的形容詞,而方法是使該名詞活動起來的動詞。 更改某個屬性將更改對象外觀或行為的某些品質。 調用任一對象方法將導致對象執(zhí)行某些操作。

本文中的 VBA 代碼針對打開的 Office 應用程序運行,在該應用程序中,代碼操控的許多對象已經打開并正在運行;例如,Application 本身、Excel 中的 Worksheet、Word 中的 Document、PowerPoint 中的 Presentation、Outlook 中的 Explorer 和 Folder 對象。 在了解對象模型的基本布局以及 Application 的一些關鍵屬性(允許您訪問當前狀態(tài))后,便可以開始使用 Office VBA 擴展和操控 Office 應用程序了。

方法

例如,在 Word 中,你可以通過使用 Application 對象的 ActiveDocument 屬性更改屬性,并調用當前 Word 文檔的方法。 此 ActiveDocument 屬性將返回對當前在 Word 應用程序中處于活動狀態(tài)的 Document 對象的引用。 “返回引用”意思是“可以訪問。”

下面的代碼完全按照它所表達的含義運行;即,保存應用程序中的活動文檔。

VB
Application.ActiveDocument.Save

從左到右閱讀代碼,“在此應用程序中,使用 ActiveDocument 引用的文檔調用 Save 方法。請注意, Save 是最簡單的方法形式;它不需要你提供任何詳細說明。 你指示 Document 對象執(zhí)行 Save 指令,它不需要你輸入更多的信息。

如果某個方法需要更多信息,則這些詳細信息被稱為參數(shù)。 下面的代碼運行 SaveAs 方法,該方法需要文件的新名稱。

VB
Application.ActiveDocument.SaveAs ("New Document Name.docx")

方法名稱后的括號中列出的值是參數(shù)。 此處,文件的新名稱是 SaveAs 方法的參數(shù)。

屬性

可以使用相同的語法來設置用于讀取屬性的屬性。 下面的代碼執(zhí)行一種方法以選擇 Excel 中的單元格 A1,然后設置屬性以在該單元格中放置內容。

VB
    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

VBA 編程的第一個挑戰(zhàn)是了解每個 Office 應用程序的對象模型以及閱讀對象、方法和屬性語法。 對象模型在所有 Office 應用程序中都類似,但每個對象模型都特定于它所操控的文檔和對象的種類。

代碼段的第一行中有 Application 對象(這次是 Excel),然后是 ActiveSheet,它提供對活動工作表的訪問。 之后是一個不太熟悉的術語 Range,這意味著“以這種方式定義單元格區(qū)域”。代碼指示 Range 創(chuàng)建自身,僅使用 A1 作為其定義的單元格集。 也就是說,代碼的第一行定義對象“Range”,并對其運行方法以選擇它。 結果會自動存儲在名為 SelectionApplication 的另一個屬性中。

代碼的第二行將 SelectionValue 屬性設置為文本“Hello World”,并且該值出現(xiàn)在單元格 A1 中。

你編寫的最簡單的 VBA 代碼可能只是獲取對 Office 應用程序中你要處理的對象的訪問權限并設置屬性。 例如,你可以在 VBA 腳本中獲取對 Word 中表中各行的訪問權限并更改其格式。

這聽起來簡單,但可能非常有用;一旦編寫了代碼,你就可以利用編程的所有強大功能在多個表或文檔中進行相同更改,或者依據(jù)某種邏輯或條件來進行更改。 對于計算機而言,進行 1000 項更改與進行 10 項更改并無不同,因此這里對于較大的文檔和問題而言就有了規(guī)模效應,而這正是 VBA 能夠真正出彩和節(jié)省時間的原因。

宏和 Visual Basic 編輯器

既然對 Office 應用程序公開其對象模型的方式有了一定了解,你可能會渴望嘗試調用對象方法、設置對象屬性,以及響應對象事件。 為此,你必須在 Office 可以理解的位置以 Office 可以理解的方式編寫代碼;通常使用 Visual Basic 編輯器進行。 盡管默認情況下已安裝該編輯器,但在功能區(qū)上將其啟用之前,許多用戶都不知道有該編輯器。

所有 Office 應用程序都使用該功能區(qū)。 功能區(qū)上的一個選項卡是“開發(fā)工具”選項卡,在此可以訪問 Visual Basic 編輯器和其他開發(fā)人員工具。 由于 Office 在默認情況下并不顯示“開發(fā)工具”選項卡,因此你必須使用以下過程啟用它:

啟用“開發(fā)工具”選項卡

  1. “文件”選項卡上,選擇“選項”以打開“選項”對話框。

  2. 選擇該對話框左側的“自定義功能區(qū)”。

  3. 在該對話框左側的“從下列位置選擇命令”下,選擇“常用命令”。

  4. 在該對話框右側的“自定義功能區(qū)”下,從下拉列表框中選擇“主選項卡”,然后選中“開發(fā)工具”復選框。

  5. 選擇“確定”。

備注

在 Office 2007 中,顯示“開發(fā)工具”選項卡的方法是選擇 Office 按鈕,選擇“選項”,然后在“選項”對話框的“常用”類別中選中“在功能區(qū)顯示'開發(fā)工具’選項卡”復選框。

啟用“開發(fā)工具”選項卡后,可以輕松找到“Visual Basic”“宏”按鈕。

圖 1. “開發(fā)工具”選項卡上的按鈕

“開發(fā)工具”選項卡上的按鈕

安全問題

為了保護 Office 用戶免受病毒和危險宏代碼的影響,你無法在使用標準文件擴展名的標準 Office 文檔中保存宏代碼, 而是必須將代碼保存在帶有特殊擴展名的文件中。 例如,你無法將宏保存在帶有 .docx 擴展名的標準 Word 文檔中;而是必須使用帶有 .docm 擴展名的特殊 Word 啟用宏的文檔。

打開 .docm 文件時,Office 安全功能可能仍會在通知或不通知你的情況下阻止文檔中的宏運行。 在所有 Office 應用程序的信任中心中檢查設置和選項。 默認設置禁止宏運行,但會提示你宏已禁用,并為你提供用于為該文檔重新啟用宏的選項。

通過創(chuàng)建可信位置、受信任的文檔或受信任的發(fā)布者,可以指定運行宏的特定文件夾。 最便攜的選項是使用受信任的發(fā)布者,它使用分發(fā)的數(shù)字簽名文檔。 有關特定 Office 應用程序中的安全設置的詳細信息,請打開“選項”對話框,然后依次選擇“信任中心”“信任中心設置”。

備注

某些 Office 應用程序(如 Outlook)默認情況下會將宏保存在你本地計算機上的主模板中。 雖然在運行自己的宏時,該策略會減少自己的計算機上的本地安全問題,但如果你要分發(fā)自己的宏,則需要部署策略。

錄制宏

選擇“開發(fā)工具”選項卡上的“宏”按鈕時,會打開“宏”對話框,該對話框允許訪問可從特定文檔或應用程序訪問的 VBA 子例程或宏。 “Visual Basic”按鈕可打開 Visual Basic 編輯器,可使用該編輯器創(chuàng)建和編輯 VBA 代碼。

Word 和 Excel 中的“開發(fā)工具”選項卡上的另一個按鈕是“錄制宏”按鈕,該按鈕自動生成 VBA 代碼,能夠再現(xiàn)你在應用程序中執(zhí)行的操作。 “錄制宏”是可以用于詳細了解 VBA 的理想工具。 閱讀生成的代碼可以讓你深入了解 VBA,并在你作為用戶需要了解的 Office 知識和作為程序員需要了解的 Office 知識之間架起一座穩(wěn)定的橋梁。 唯一需要說明的一點是,生成的代碼可能令人困惑,因為宏編輯器必須對你的意圖進行一些假設,而這些假設不一定準確。

錄制宏

  1. 將 Excel 打開為新的工作簿,并選擇功能區(qū)中的“開發(fā)工具”選項卡。 選擇“錄制宏”并接受“錄制宏”對話框中的所有默認設置,將“Macro1”作為宏名稱,將“此工作簿”作為位置。

  2. 選擇“確定”開始錄制宏。 請注意按鈕文本是如何變?yōu)?strong>“停止錄制”的。 完成想要錄制的操作后即選擇該按鈕。

  3. 選擇單元格 B1 并鍵入程序員經典的第一個字符串:Hello World。 停止鍵入并查看“停止錄制”按鈕;它將灰顯,因為 Excel 正在等待你完成在該單元格中鍵入值的操作。

  4. 選擇單元格 B2 以完成單元格 B1 中的操作,然后選擇“停止錄制”。

  5. “開發(fā)工具”選項卡上選擇“宏”,選擇“Macro1”(如果未選擇),然后選擇“編輯”以在 Visual Basic 編輯器中查看 Macro1 的代碼。

圖 2. Visual Basic Editor 中的宏代碼

Visual Basic Editor 中的宏代碼

查看代碼

你創(chuàng)建的宏看起來應類似于如下代碼。

VB
Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

請注意與前面在單元格 A1 中選擇文本的代碼段的相似之處,以及不同之處。 在此代碼中,選擇了單元格 B1,然后將字符串“Hello World”應用到了已激活的單元格。 文本兩邊的引號指定與數(shù)字值對照的字符串值。

是否記得如何選擇單元格 B2 以再次顯示“停止錄制”按鈕? 該操作也顯示為一行代碼。 宏錄制器記錄每次擊鍵。

以撇號開頭并由編輯器標為綠色的代碼行是說明代碼或提醒你和其他程序員代碼用途的注釋。 VBA 忽略以單引號開頭的任何行或行的一部分。 在代碼中編寫清除的相應注釋非常重要,但該討論是不在本文范圍內。 本文后面對此代碼的引用不包括這四個注釋行。

在宏錄制器生成代碼時,它使用復雜的算法確定預期的方法和屬性。 如果未能識別給定的屬性,有許多可用的資源能夠提供幫助。 例如,在已錄制宏中,宏錄制器生成了引用 FormulaR1C1 屬性的代碼。 不清楚上述內容的含義?

備注

請注意,Application 對象隱含在所有 VBA 宏中。 記錄的代碼適用于 Application。 每行的開頭。

使用開發(fā)工具幫助

選擇已錄制宏中的“FormulaR1C1”,并按 F1。 幫助系統(tǒng)運行快速搜索,確定相應的主題位于 Excel 幫助的“Excel 開發(fā)工具”部分,并列出 FormulaR1C1 屬性。 可以選擇該鏈接了解有關該屬性的詳細信息,但在執(zhí)行該操作前,請注意窗口底部附近的 Excel 對象模型參考鏈接。 選擇該鏈接可查看 Excel 在其對象模型中用于描述工作表及其組件所使用的對象的長列表。

選擇以上任一選項以查看適用于該特定對象的屬性和方法,以及對于不同相關選項的交叉引用。 許多幫助項也有簡短的代碼示例,可以為你提供幫助。 例如,可以點擊 Borders 對象中的鏈接,以查看如何在 VBA 中設置邊框。

VB
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

編輯代碼

邊框代碼看起來與錄制的宏不同。 對象模型令人迷惑的一點是可使用多種方法處理任何給定對象(在本例中為單元格 A1)。

有時,學習編程的最好方法是對某些運行代碼進行微小更改,然后查看結果。 立即嘗試。 在 Visual Basic 編輯器中打開 Macro1,并將代碼更改為以下內容。

VB
Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

提示

在處理代碼時盡可能地使用復制和粘貼操作,以避免鍵入錯誤。

無需保存代碼即可試用,因此請返回到 Excel 文檔,選擇 開發(fā)人員 選項卡上的 ,選擇 宏 1,然后選擇 運行。 單元格 A1 現(xiàn)在包含文本 Wow! 且其四周有雙線邊框。

圖 3. 第一個宏的運行結果

第一個宏的運行結果

剛才錄制了宏,閱讀了對象模型文檔,并通過簡單編程制作了一個可執(zhí)行某項操作的 VBA 程序。 恭喜!

宏沒有運行? 閱讀 VBA 中的調試建議。

編程提示和技巧

從示例開始

VBA 社區(qū)非常大;在 Web 上進行搜索幾乎總是可以獲得其執(zhí)行的操作與你要執(zhí)行的操作類似的 VBA 代碼示例。 如果你找不到好的示例,請嘗試將任務分解為較小的單元,然后搜索其中每個單元,或者嘗試考慮更常見、但類似的問題。 從示例開始可為你節(jié)省數(shù)小時的時間。

這并不意味著編寫嚴密的免費代碼在 Web 上等待你使用。 事實上,你找到的一些代碼可能有缺陷或錯誤。 但你聯(lián)機或在 VBA 文檔中找到的示例可為你提供良好的開端。 請記住,學習編程需要時間和思索。 在你忙于使用另一個解決方案來解決你的問題之前,請詢問自己 VBA 是不是解決此問題的正確選擇。

處理較簡單的問題

編程過程可能會迅速變得復雜化。 將問題分解為盡可能小的邏輯單元,然后獨立編寫并測試每個單元,這一點很重要,尤其對于初學者。 如果你面前有太多代碼,并且你變得迷惑或糊涂,請停止并撇開問題。 當你重新面對問題時,可以將一個小問題復制到新模塊中,解決該問題,讓代碼運行,并測試它以確保它能夠運行。 然后移動到下一個部分。

缺陷和調試

有兩種主要類型的編程錯誤:語法 錯誤,即違反編程語言的語法規(guī)則;運行時 錯誤,即看上去語法正確,但在 VBA 嘗試執(zhí)行代碼時失敗。

雖然修復這些錯誤可能令人沮喪,但語法錯誤很容易捕獲;如果您在代碼中鍵入語法錯誤,Visual Basic 編輯器會發(fā)出嘟嘟聲并閃爍。

例如,在 VBA 中必須使用雙引號將字符串值括起來。 若要了解改用單引號時會發(fā)生什么情況,請返回到 Visual Basic 編輯器,并將代碼示例中的“Wow!”字符串替換為“Wow!” (即,單詞 Wow 用單引號括起來)。 如果選擇下一行,Visual Basic 編輯器會做出響應。 錯誤“編譯錯誤:預期: 表達式”不是很有幫助,但是生成錯誤的行變?yōu)榧t色,告訴你該行中存在語法錯誤,因此,此程序將無法運行。

選擇“確定”,然后將文本改回“Wow!”。

運行時錯誤較難以捕獲,因為編程語法看上去正確,但代碼在 VBA 嘗試執(zhí)行時失敗。

例如,打開 Visual Basic 編輯器,在宏中將 Value 屬性名更改為 ValueX,故意引入運行時錯誤,因為 Range 對象沒有名為 ValueX 的屬性。 返回到 Excel 文檔,打開“宏”對話框并再次運行 Macro1。 應看到一個 Visual Basic 消息框,其中解釋了運行時錯誤,文本為“對象不支持此方法的此屬性”。雖然該文本很清晰,但請選擇 “調試” 以了解更多信息。

當您返回到 Visual Basic 編輯器時,編輯器處于特定調試模式,即使用黃色突出顯示失敗的代碼行。 與預期的一樣,突出顯示了包括 ValueX 屬性的行。

可以對運行中的 VBA 代碼進行更改,以將 ValueX 改回 Value,然后選擇“調試”菜單下的綠色小播放按鈕。 程序應能夠再次正常運行。

了解如何精心地使用調試器以獲得更長、更復雜的程序是一個不錯的主意。 至少,了解如何設置斷點以在想要查看代碼時停止執(zhí)行、代碼運行時如何添加監(jiān)視點以查看不同變量和屬性的值、以及如何逐行查看代碼時。 這些選項在“調試”菜單中均有提供,認真的調試器用戶通常會記住相應的鍵盤快捷方式。

恰當使用參考材料

若要打開內建于 Office 幫助的開發(fā)人員參考,請通過選擇功能區(qū)中的問號或按 F1 打開任何 Office 應用程序中的幫助參考。 然后,在“搜索”按鈕右側,選擇下拉箭頭以篩選內容。 選擇開發(fā)人員參考。 如果在左面板中沒有看到目錄,請選擇小書圖標將其打開,然后從中展開對象模型參考。

圖 5. 開發(fā)工具幫助上的篩選功能適用于所有 Office 應用程序

開發(fā)工具幫助上的篩選功能適用于所有 Office 應用程序

瀏覽對象模型參考所花費的時間將得到回報。 在你了解要使用的 Office 應用程序的 VBA 語法和對象模型的基礎知識后,你的技能會得到提升,你將從主觀猜測轉變?yōu)榘捶椒ㄏ到y(tǒng)化編程。

當然,Microsoft Office 開發(fā)人員中心是一個提供文章、技巧和社區(qū)信息的出色門戶。

搜索論壇和群組

所有程序員都會時不時遇到困難,即使在閱讀他們可以找到的每篇參考文章之后。他們晚上睡覺時會失眠,因為他們在思考解決問題的各種方法。 幸運的是,Internet 促進了互相幫助以解決編程問題的開發(fā)人員社區(qū)的發(fā)展。

在網絡上搜索“office 開發(fā)人員論壇”時會顯示幾個討論組。 你也可以搜索“office 開發(fā)”或問題描述來查找論壇、博文以及文章。

如果你已為解決問題而竭盡全力,那么就不要害怕將你的問題張貼到開發(fā)人員論壇上。 這些論壇歡迎來自較新程序員的帖子,并且許多有經驗的開發(fā)人員都很樂于提供幫助。

下面是在向開發(fā)人員論壇中張貼內容時需遵守的幾點規(guī)定:

  • 在張貼之前,應在網站上查找 FAQ 或論壇成員希望你遵循的準則。 確保所張貼的內容符合這些準則,并位于論壇的正確區(qū)域。

  • 包括清楚的完整代碼示例,如果您的代碼是一長段代碼的一部分,請考慮編輯您的代碼以向其他人進行闡述。

  • 清楚準確地描述你的問題,并概述你為解決此問題已經采取的所有步驟。 花些時間盡力編寫好的帖子,尤其在你慌亂或匆忙時。 采用對首次閱讀問題陳述的讀者有意義的方式介紹情況。

  • 要有禮貌,并表達你的感激之情。

進一步了解編程

雖然本文很短且只談到 VBA 和編程的表面內容,但希望它能夠為你提供足夠的入門信息。

本節(jié)簡單討論一些較關鍵的主題。

變量

在本文提供的簡單示例中,你處理的是應用程序已創(chuàng)建的對象。 你可能希望創(chuàng)建自己的對象來存儲值或對應用程序中臨時使用的其他對象的引用。 這些對象稱為變量。

若要在 VBA 中使用變量,必須使用 Dim 語句告訴 VBA 變量所代表的對象類型。 然后,設置其值并用它來設置其他變量或屬性。

VB
    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

分支和循環(huán)

本文中的簡單程序從上到下一次執(zhí)行一行。 編程的真正功能來自你必須根據(jù)指定的一個或多個條件確定要執(zhí)行哪些代碼行的選項。 你可以進一步擴展這些功能,以便可以重復執(zhí)行一項操作許多次。 例如,下面的代碼擴展了 Macro1。

VB
Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub

在 Visual Basic 編輯器中鍵入代碼或粘貼代碼,然后運行編輯器。 按照出現(xiàn)的消息框中的說明操作,并將單元格 A1 中的文本從 Wow! 更改為 Yes! 然后再次運行編輯器,以查看循環(huán)功能。 該代碼段演示變量、分支和循環(huán)。 執(zhí)行期間仔細閱讀代碼,并嘗試確定每行代碼執(zhí)行時會發(fā)生的操作。

我的所有 Office 應用程序:示例代碼

下面是一些要嘗試的腳本;每個腳本解決一個 Office 實際問題。

在 Outlook 中創(chuàng)建電子郵件

VB
Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

請注意,有時你可能希望在 Outlook 中自動創(chuàng)建電子郵件;你也可以使用模板。

刪除 Excel 工作表中的空行

VB
Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

請注意,您可以選擇一列單元格,然后運行此宏來刪除所選列中具有空白單元格的所有行。

刪除 PowerPoint 中的空文本框

VB
Sub RemoveEmptyTextBoxes()
    Dim SlideObj As Slide
    Dim ShapeObj As Shape
    Dim ShapeIndex As Integer
    For Each SlideObj In ActivePresentation.Slides
        For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
            Set ShapeObj = SlideObj.Shapes(ShapeIndex)
            If ShapeObj.Type = msoTextBox Then
                If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
                    ShapeObj.Delete
                End If
            End If
        Next ShapeIndex
    Next SlideObj
End Sub

請注意,此代碼循環(huán)訪問所有幻燈片并刪除沒有任何文本的所有文本框。 計數(shù)變量遞減而不是遞增,因為代碼每次刪除一個對象時,都會從集合中移除該對象,從而減小了計數(shù)。

將 Outlook 中的聯(lián)系人復制到 Word

VB
Sub CopyCurrentContact()
   Dim OutlookObj As Object
   Dim InspectorObj As Object
   Dim ItemObj As Object
   Set OutlookObj = CreateObject("Outlook.Application")
   Set InspectorObj = OutlookObj.ActiveInspector
   Set ItemObj = InspectorObj.CurrentItem
   Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

請注意,此代碼將 Outlook 中當前打開的聯(lián)系人復制到打開的 Word 文檔中。 僅當 Outlook 中包含當前打開以供檢查的聯(lián)系人時,此代碼才運行。

支持和反饋

有關于 Office VBA 或本文檔的疑問或反饋? 請參閱 Office VBA 支持和反饋,獲取有關如何接收支持和提供反饋的指南。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多