Office 的VBA 入門

文章推薦指數: 80 %
投票人數:10人

或者,您需要將Excel 的資料移到一組PowerPoint 投影片中? 有時候簡單的複製和貼上並無法完成您想要執行的工作,或者是速度過慢。

您可使用VBA 程式設計 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 編輯 Twitter LinkedIn Facebook 電子郵件 目錄 Office的VBA入門 發行項 06/13/2022 1位參與者 本文內容 您是否需要在Word中重複清除五十份資料表?您是否想要在開啟特定文件時提示使用者輸入?您是否無法找到有效的方式將連絡人從MicrosoftOutlook匯入MicrosoftExcel試算表? 您可以使用Office的VisualBasicforApplications(VBA)來執行這些工作,並完成其他許多工作—Office的VBA是一個簡易卻功能強大的程式設計語言,可讓您用來擴充Office應用程式的功能。

本文適用於曾經使用過Office的使用者,這些使用者可能想了解VBA,或想進一步了解程式設計可以如何協助他們自訂Office。

Office應用程式套件擁有豐富的功能。

在文件、電子郵件、資料庫、表單、試算表及簡報的撰寫、格式設定及管理上,提供許多不同的方法。

Office中強大的VBA程式設計功能,可讓您使用VBA來執行您透過滑鼠、鍵盤或對話方塊可執行的每項作業。

之外,使用VBA執行作業一次後,往後可以照樣輕鬆地執行100次。

(事實上,Office中的VBA最常見的用途之一是自動執行重複的工作。

) 除了撰寫VBA指令碼以加速日常工作的功能之外,您還可以使用VBA新增功能至Office應用程式,或以符合您業務需求的特定方式來提示文件使用者並與其互動。

例如,您可以撰寫一些顯示快顯訊息的VBA程式碼,以提醒使用者在第一次嘗試儲存文件時,將文件儲存至特定網路磁碟機。

本文會探討運用VBA程式設計強大功能的一些主要原因。

文中會探討可與您的解決方案搭配使用的VBA語言以及立即可用的工具。

最後,文章中也會提供幾個可避免常見程式設計失敗和錯誤的技巧與方法。

注意 對於開發跨多個平台,擴充使用者Office體驗的解決方案感到興趣嗎?請參閱新的Office增益集模型。

與VSTO增益集和解決方案相比,Office增益集的佔用空間較小,而且您可以使用幾乎任何網頁程式技術(例如HTML5、JavaScript、CSS3和XML)來建立這些增益集。

使用VBA的時機與原因 考慮使用Office的VBA程式設計主要有以下數個原因。

自動化和重複執行 對於設定格式或修正問題這類重複的工作來說,使用VBA非常的有效且有效率。

比如說,您曾經需要變更Word中每一頁上方的段落樣式?曾經需要將從Excel貼到Word文件或Outlook電子郵件的多個表格的格式重新設定?曾經需要針對多位Outlook連絡人進行相同的變更? 如果需要進行的變更次數超過十次或二十次,那麼就值得使用VBA來自動進行這項變更。

如果需要變更的次數有上百次,就絕對必須考慮使用VBA。

幾乎所有可手動進行的格式設定動作或編輯變更,都可透過VBA完成。

允許使用者互動的擴充功能 有時候,您會想鼓勵或強制使用者,以非標準應用的特定方式與Office應用程式或文件互動。

例如,您想在使用者開啟、儲存或列印文件時,提示使用者採取特殊動作。

Office應用程式之間的整合 您需要將所有Outlook連絡人複製到Word,然後以某種特殊方法設定連絡人格式嗎?或者,您需要將Excel的資料移到一組PowerPoint投影片中?有時候簡單的複製和貼上並無法完成您想要執行的工作,或者是速度過慢。

您可使用VBA程式設計同時與兩個以上的Office應用程式的詳細資料互動,然後根據其中一個應用程式中的內容,來修改另一個應用程式中的內容。

另闢他法 VBA程式設計是一個功能強大的解決方案,但不一定總是最佳作法。

有時候,需要使用其他方法來達成您的目的。

關鍵問題在於,是否還有更簡單的方法。

開始使用VBA專案前,請先考慮使用內建的工具和標準功能。

例如,在進行耗時的編輯或版面配置工作時,可考慮使用樣式或快速鍵來解決問題。

您可否執行一次工作,之後使用CTRL+Y(重做)來重複工作呢?您可否使用正確的格式或範本來建立新文件,然後將內容複製到該新文件內嗎? Office應用程式的功能相當強大;當中已內建您需要的解決方案。

進行程式設計前,請先花些時間深入了解Office。

開始使用VBA專案前,請先確定您有充裕的時間可使用VBA。

進行程式設計時必須專心投入,且過程可能無法預測。

特別是初學者,除非您有充裕的時間能細心工作,否則不要輕易開始進行程式設計。

在時間緊迫的情況下,要寫出解決問題的「快速指令碼」,會讓自己陷於極度緊張的壓力中。

如果您時間很趕,可能會想使用傳統方法,雖然這些方法既死板,重複性又高。

VBA程式設計101 使用程式碼讓應用程式工作 您可能會認為撰寫程式碼是一項神秘又困難的工作,但其基本的原則運用到的是日常隨手可及的原理。

MicrosoftOffice應用程式的建立方式是稱之為物件的東西,這些物件可以接收指示,與電話設計有按鈕讓您與電話互動的方式大致相同。

當您按下按鈕時,電話就會辨識指示,並且以您撥號的順序包含對應的數字。

在程式設計中,您與應用程式互動的方式是將指示傳送至應用程式中的各種物件。

這些物件相當廣泛,但還是有其限制。

它們只能按照設計的目的執行工作,並依照您的指示行事。

例如,試想使用者在Word中開啟一份文件、進行一些變更、儲存文件然後關閉應用程式。

在VBA程式設計概念裡,Word會顯示為Document物件。

透過使用VBA程式碼,您可指示Document物件進行類似Open、Save或Close動作。

下一節將討論組織及描述物件的方式。

物件模型 開發人員會在階層中組織程式設計物件,該階層稱為應用程式的物件模型。

以Word為例,它有包含文件物件的最上層應用程式物件。

文件物件包含段落物件,依此類推。

物件模型大致上會鏡像處理您在使用者介面中看到的內容。

它們是應用程式及其功能的概念性對應。

物件的定義稱為類別,所以您可能會看到這兩個詞彙交互應用。

技術上而言,類別是用來建立或具現化物件的描述或範本。

物件存在後,您可以藉由設定物件屬性和呼叫物件方法,來操作此物件。

如果您把物件想成是名詞,屬性就是描述名詞的形容詞,方法是賦予名詞動作的動詞。

變更屬性即會變更物件外觀或行為的某些品質。

呼叫其中一個物件方法則可讓物件執行某些動作。

本文章中的VBA程式碼會在一個開啟的Office應用程式中執行,而該程式碼所操控的許多物件皆已正常運作中;例如Application本身、Excel中的工作表、Word中的文件、PowerPoint中的簡報、Outlook中的Explorer和Folder物件。

在您瞭解物件模型的基本配置,以及可存取其目前狀態的一些重要應用程式屬性後,就可以開始使用Office中的VBA來擴充和管理該Office應用程式。

方法 舉例來說,您可以使用Application物件的ActiveDocument屬性變更目前Word文件中的屬性,並在其中叫用方法。

這個ActiveDocument屬性會傳回Document物件的參考,該物件目前在Word應用程式中為使用中。

「傳回參考」意思是「讓您存取」。

下列程式碼會依照其內容執行作業;換句話說,它會儲存應用程式中的使用中文件。

Application.ActiveDocument.Save 從左到右讀取程式碼,「在此Application中,具有ActiveDocument參考的Document,叫用Save方法」。

請注意,Save是最簡單的方法形式;它不需要您做任何詳細指示。

指示Document物件進行Save後,您就不需要進行任何其他輸入。

如果方法需要更多資訊,這些詳細資料稱為參數。

下列程式碼會執行SaveAs方法,它需要檔案的新名稱。

Application.ActiveDocument.SaveAs("NewDocumentName.docx") 方法名稱後面括號中所列出的值就是參數。

在這裡,檔案的新名稱是SaveAs方法的參數。

屬性 您可以使用相同的語法來設定用來讀取屬性的屬性。

下列程式碼會執行一個方法,以在Excel中選取儲存格A1,然後設定屬性將某些內容置於該儲存格。

Application.ActiveSheet.Range("A1").Select Application.Selection.Value="HelloWorld" 使用VBA程式設計的第一個挑戰是認識每個Office應用程式的物件模型,然後讀懂物件、方法和屬性語法。

所有Office應用程式內的物件模型都類似,但每個物件模型又專屬於該文件類型與其操控之物件。

在程式碼片段第一行上寫有Application物件,這次是指Excel,後面接ActiveSheet,表示提供使用中工作表的存取權。

之後則是不太熟悉的術語,Range,它表示「以這種方式定義儲存格的範圍」。

該程式碼指示Range建立只有A1作為它定義的一組儲存格的範圍。

也就是說,程式碼的第一行可定義物件、Range,並且針對物件執行方法以選取物件。

結果會自動儲存在Application的另一個屬性中,該屬性稱為Selection。

程式碼的第二行將Selection的Value屬性設為文字"HelloWorld",該值會顯示在儲存格A1中。

您撰寫的最簡單VBA程式碼可能會存取您正在使用的Office應用程式物件並設定屬性。

例如,您可以在Word中存取表格的資料列,並在VBA指令碼中變更其格式。

聽起來雖然簡單,卻非常有用。

只要您可以寫出程式碼,就能運用程式設計的強大功能在數個表格或文件中進行相同的變更,或根據某些邏輯或條件進行變更。

對電腦來說,變更1000次跟變更10次是一樣的,因此在大型的文件或大量問題上,使用電腦可帶來經濟效益,這也就是VBA能真正發揮功用並為您節省時間的地方。

巨集與VisualBasic編輯器 現在您已初步了解Office應用程式如何公開其物件模型,您可能會亟欲嘗試呼叫物件方法、設定物件屬性和回應物件事件。

若要這麼做,您必須以Office能了解的方法撰寫完善的程式碼。

通常來說,會使用VisualBasic編輯器。

雖然VisualBasic編輯器通常已預設安裝,但許多使用者卻不知道,直到在功能區上啟用它。

所有Office應用程式都會使用功能區。

功能區上的其中一個索引標籤是[開發人員]索引標籤,您可在此存取VisualBasic編輯器和其他開發人員工具。

依照預設,Office不會顯示[開發人員]索引標籤,您必須使用下列程序來啟用它: 若要啟用[開發人員]索引標籤 在[檔案]索引標籤上,選擇[選項]以開啟[選項]對話方塊。

選擇對話方塊左側的[自訂功能區]。

在對話方塊左側的[由此選擇命令]底下,選取[常用命令]。

在對話方塊右側的[自訂功能區]下,選取下拉式清單方塊中的[主要索引標籤],然後選取[開發人員]核取方塊。

選擇[確定]。

注意 在Office2007中,若要顯示[開發人員]索引標籤,請依序選擇[Office]按鈕及[選項],然後在[選項]對話方塊的[常用]類別中,選取[在功能區顯示[開發人員]索引標籤]核取方塊。

啟用[開發人員]索引標籤之後,即可輕鬆找到[VisualBasic]和[巨集]按鈕。

圖1。

[開發人員]索引標籤上的按鈕 安全性問題 為了保護Office使用者免受病毒與危險的巨集程式碼影響,您無法將巨集程式碼儲存為使用標準副檔名的標準Office文件。

您必須將程式碼儲存為使用特殊副檔名的檔案。

例如,您無法將巨集儲存為使用.docx副檔名的標準Word文件。

您必須將其儲存為使用特殊.docm副檔名的啟用巨集的Word文件。

當您開啟.docm檔案時,Office安全性可能會在告知或不告知您的前提下,防止執行文件中的巨集。

請檢查所有Office應用程式中「信任中心」的設定和選項。

預設設定為停用巨集執行,但會警告您該巨集已停用,並提供選項讓您在該文件中再將其開啟。

您可以透過建立信任位置、信任的文件或受信任的發行者,指定能夠在其中執行巨集的特定資料夾。

大部分可攜式選項是使用受信任的發行者,其適用於您發佈的數位簽章文件。

如需特定Office應用程式中安全性設定的詳細資訊,請開啟[選項]對話方塊,選擇[信任中心],然後再選擇[信任中心設定]。

注意 某些Office應用程式(如Outlook)預設會將巨集儲存在本機電腦的主範本中。

雖然該策略會在您執行自己的巨集時,降低您電腦上的本機安全性問題,但是如果您想散佈巨集,則需要部署策略。

錄製巨集 當您選擇[開發人員]索引標籤上的[巨集]按鈕時,即會開啟[巨集]對話方塊,提供您VBA副程式或巨集的存取權,讓您可以從特定文件或應用程式加以存取。

[VisualBasic]按鈕可開啟VisualBasic編輯器,您可以在此建立及編輯VBA程式碼。

Word和Excel中[開發人員]索引標籤上的另一個按鈕是[錄製巨集]按鈕,它會自動產生VBA程式碼,以重現您在應用程式中執行的動作。

[錄製巨集]是一個非常實用的工具,可讓您深入了解VBA。

讀取產生的程式碼可以讓您洞悉VBA,並且在您身為使用者對於Office的知識,與身為程式設計人員的知識之間提供穩定的橋樑。

唯一要注意的是產生的程式碼可能令人混淆,因為巨集編輯器必須對您的目的做假設,而這些假設不一定準確。

若要錄製巨集 開啟新的Excel活頁簿,然後選擇功能區中的[開發人員]索引標籤。

選擇[錄製巨集]並接受[錄製巨集]對話方塊中的所有預設設定,包括以Macro1做為巨集的名稱,並以ThisWorkbook作為位置。

選擇[確定]開始錄製巨集。

請注意按鈕文字如何變更為[停止錄製]。

完成想要錄製的動作之後立即選擇該按鈕。

選擇儲存格B1,並輸入程式設計人員的第一個經典字串:HelloWorld。

停止輸入並查看[停止錄製]按鈕;按鈕會變為灰色,因為Excel正在等候您於儲存格中完成輸入值。

選擇儲存格B2來完成儲存格B1中的動作,然後選擇[停止錄製]。

在[開發人員]索引標籤上選擇[巨集],然後選擇[Macro1](如果未選取),再選擇[編輯],以在VisualBasic編輯器中檢視Macro1的程式碼。

圖2。

VisualBasic編輯器中的巨集程式碼 檢視程式碼 您建立的巨集看起來應該類似下列程式碼。

SubMacro1() ' 'Macro1Macro ' ' Range("B1").Select ActiveCell.FormulaR1C1="HelloWorld" Range("B2").Select EndSub 請留意和稍早的程式碼片段(選取儲存格A1中的文字)之間的相似處與差異處。

此程式碼會選取儲存格B1,並將"HelloWorld"字串套用到已使用中的儲存格。

文字周圍的引號用來指定字串值,而不是數值。

還記得您如何選擇儲存格B2以再次顯示[停止錄製]按鈕嗎?這個動作也會顯示為程式碼中的一行。

巨集錄製器會錄製每個按鍵動作。

以單引號開頭,且被編輯器標示為綠色的程式碼行是註解,可用來說明程式碼或提醒您和其他程式設計人員該程式碼的用途。

VBA會忽略任何以單引號開頭的程式碼行或部分。

在您的程式碼中撰寫清楚、正確的註解是很一個重要的主題,但這項討論已超出本文章的涵蓋範圍。

此文章中對此程式碼的後續參考不會包括這四個註解行。

當巨集錄製器產生程式碼時,它會使用複雜的演算法來決定您想要的方法和屬性。

如果您無法辨識給定的屬性,還有許多資源可以協助您。

例如,在您所錄製的巨集中,巨集錄製器會產生參考FormulaR1C1屬性的程式碼。

不確定這是什麼意思嗎? 注意 請注意,Application物件會隱含在所有VBA巨集中。

您所錄製的程式碼會使用Application。

在每一行的開頭。

使用開發人員說明 在錄製的巨集中選取FormulaR1C1,然後按F1鍵。

[說明]系統會執行快速搜尋,決定適當的主題是在[Excel說明]的[Excel開發人員]區段中,並且列出FormulaR1C1屬性。

您可以選擇連結以深入了解屬性,但是在那之前,請注意視窗底部附近的[Excel物件模型參考]連結。

選擇連結以檢視物件的詳細清單,Excel會在其物件模型中用來描述工作表及其元件。

選擇任何一項以查看適用該特定物件的屬性和方法,以及不同相關選項的交互參考。

許多[說明]項目也附有簡短的程式碼範例,可提供您協助。

例如,您可以遵循Borders物件中的連結,以了解如何在VBA中設定框線。

Worksheets(1).Range("A1").Borders.LineStyle=xlDouble 編輯程式碼 Borders程式碼看起來與已錄製的巨集不同。

物件模型令人困惑的一點是,處理特定物件的方法有多種(在本範例中為儲存格A1)。

有時,學習程式設計的最好方法是對某些使用中的程式碼最出些微變更,然後查看所得到的結果。

立即嘗試。

在VisualBasic編輯器中開啟Macro1,然後將程式碼變更為下列。

SubMacro1() Worksheets(1).Range("A1").Value="Wow!" Worksheets(1).Range("A1").Borders.LineStyle=xlDouble EndSub 提示 盡可能在處理程式碼時使用複製及貼上,以避免輸入錯誤。

您不需要儲存程式碼即可測試,因此請返回Excel文件,選擇[開發人員]索引標籤上的[巨集],然後依序選擇[Macro1]及[執行]。

儲存格A1現在含有文字Wow!,周圍具有雙線框線。

圖3.第一個巨集的結果 您剛剛合併巨集錄製、讀取物件模型文件及簡單的程式設計,讓VBA程式執行作業。

恭喜! 不成功嗎?請繼續閱讀VBA的偵錯建議。

程式設計秘訣與技巧 以範例開始 VBA社群十分廣大。

只要搜尋網路幾乎都可以找到與您想執行的動作相似的VBA程式碼範例。

如果找不到適合的範例,請嘗試將工作劃分成較小的單元,然後搜尋各個單元,或者想一個類似的常見問題。

使用範例來開始,可讓您節省數小時的時間。

但這不表示,網路上有免費且構思完備的程式碼等著您取用。

事實上,您找到的某些程式碼可能帶有錯誤。

在網路或VBA文件上找到的範例能為您提供一個好的開始。

請記得,學習程式設計需要花時間、花腦力。

在您急著採用另一個解決方案來解決問題前,請先問自己VBA是否是解決這個問題的最佳選擇。

簡化問題 程式設計概念很快就會變得複雜。

請務必將問題劃分為儘可能最小的邏輯單位,然後獨立撰寫和測試每個小部分,尤其對初學者而言非常重要。

如果程式碼太多讓您感到困惑或迷失,請先停止,並將問題放在一旁。

在您重新檢視問題時,將問題的一小部分複製到新模型、解決這個問題,讓程式碼成功運作,並進行測試來確保運作順利。

然後再跳到下一個部分。

錯誤和偵錯 有兩種主要的程式設計錯誤類型:「語法」錯誤,該錯誤違反程式設計語言的文法規則;以及「執行階段」錯誤,該錯誤在語法上看似正確,但是會在VBA嘗試執行程式碼時失敗。

雖然修正這些錯誤可能令人沮喪,但是語法錯誤很容易發現;如果您輸入的程式碼發生語法錯誤,VisualBasic編輯器會嗶一聲並閃爍。

例如,在VBA中必須以雙引號括住字串值。

若要知道當您改用單引號時會發生什麼事,請返回VisualBasic編輯器並且將程式碼範例中的"Wow!"字串取代為'Wow!'(也就是以單引號括住Wow)。

如果您選擇下一行,VisualBasic編輯器會反應。

「編譯錯誤:預期:運算式」錯誤不太有幫助,但是產生錯誤的那一行會變成紅色,告訴您在該行有語法錯誤,因此此程式將不會執行。

選擇[確定]並將文字變更回"Wow!"。

執行階段錯誤比較難發現,因為程式設計語法看似正確,但是程式碼會在VBA嘗試執行時失敗。

例如,開啟VisualBasic編輯器,並將您巨集中的Value屬性名稱變更為ValueX,這會刻意引進執行階段錯誤,因為Range物件沒有稱為ValueX的屬性。

返回Excel文件、開啟[巨集]對話方塊,並再次執行Macro1。

您應該會看到VisualBasic訊息方塊,以下列文字說明執行階段錯誤:「物件不支援方法的這個屬性」。

雖然該文字已清除,請選擇[偵錯]以尋找更多項目。

當您返回VisualBasic編輯器時,該編輯器會處於特殊偵錯模式,使用黃色醒目提示來顯示失敗的程式碼行。

按照預期,包含ValueX屬性的行會反白顯示。

您可以變更執行中的VBA程式碼,因此請將ValueX變更回Value,然後選擇[偵錯]功能表底下的綠色播放小按鈕。

程式應該會再次正常執行。

最好能夠了解如何針對更長、更複雜的程式,更刻意地使用偵錯工具。

至少了解如何設定中斷點,在您想要查看程式碼的那一點停止執行;如何加入監看以查看當程式碼執行時不同變數和屬性的值,以及如何一行一行逐步執行程式碼。

這些選項都可以在[偵錯]功能表取得,認真的偵錯工具使用者通常會記下相應的鍵盤快速鍵。

善用參考資料 若要開啟[Office說明]內建的開發人員參考,選擇功能區中的問號,或按下F1鍵,從任何Office應用程式開啟說明參考。

然後,在[搜尋]按鈕的右邊,選擇下拉箭號來篩選內容。

選擇[開發人員參考]。

如果看不到左方面板中的目錄,請選擇小書本圖示來開啟,然後從該處展開物件模型參考。

圖5。

開發人員[說明]的篩選會套用至所有Office應用程式 花時間瀏覽物件模型參考將有所回報。

在您了解VBA語法基礎及您使用之Office應用程式的物件模型之後,即可從猜測進階為有條理的程式設計。

當然,MicrosoftOffice開發人員中心是提供文章、秘訣及社群資訊的絕佳入口網站。

搜尋論壇和群組 即使在讀完所有找得到的參考文章,並犧牲睡眠時間思考解決問題的不同方式,所有程式設計人員不免還是會遇到瓶頸。

幸好網際網路培育出開發人員社群,可彼此協助解決程式設計問題。

在網路上搜尋「Office開發人員論壇」可以找到好幾個討論群組。

您可以「office開發」或以您的問題描述進行搜尋,以探索各方論壇、部落格文章以及文章。

如果已經做了所有努力,還是無法解決問題,請放心將您的問題張貼到開發人員論壇。

這些論壇歡迎新手程式設計人員的文章,而許多資深開發人員也十分樂於提供協助。

以下是在開發人員論壇中張貼文章時,需要遵守的幾點不成文規定: 張貼之前,先查看網站上的常見問題集,或成員希望您遵守的指南。

確定您張貼的內容符合指南的規定,並且張貼在論壇中的正確位置。

包含清楚且完整的程式碼範例,如果是長篇程式碼的一部分,請考慮編輯程式碼,以為其他人釐清。

清楚、準確地描述您的問題,並摘要說明您在解決此問題所採取的步驟。

盡可能花時間撰寫文件,特別是在您感到慌亂或匆忙時。

以讀者初次閱讀問題說明就能明白的方式來陳述問題。

有禮貌並表達您的謝意。

進階程式設計 雖然本文章內容不長,只觸及VBA及程式設計的表面,但是希望足夠讓您輕鬆入門。

本節簡短討論一些更重要的主題。

變數 在本文章所述的簡單範例中,您所操作的物件已在應用程式中建立。

您可能會想建立自己的物件來儲存其他物件的值或參考,以暫時在應用程式中使用。

這些稱為變數。

若要在VBA中使用變數,您必須使用Dim陳述式告知VBA變數代表的物件類型。

您可以接著設定其值,然後用它來設定其他變數或屬性。

DimMyStringVariableAsString MyStringVariable="Wow!" Worksheets(1).Range("A1").Value=MyStringVariable 分支和迴圈 本文章中的簡單程式每次會執行一行程式碼,依序由上到下。

程式設計真正強大的功能來自於能讓您根據一或多個指定條件,決定要執行的程式碼行。

當您能重複執行某項作業多次之後,還可以更進一步擴充這些功能。

例如,下列程式碼擴充Macro1。

SubMacro1() IfWorksheets(1).Range("A1").Value="Yes!"Then DimiAsInteger Fori=2To10 Worksheets(1).Range("A"&i).Value="OK!"&i Nexti Else MsgBox"PutYes!incellA1" EndIf EndSub 在VisualBasic編輯器中輸入或貼上程式碼,然後執行該程式碼。

請遵照顯示之訊息方塊的方向,將儲存格A1中的文字從Wow!變更為Yes!然後再次執行它以查看迴圈的能力。

此程式碼片段示範變數:分支和迴圈。

看到它執行動作之後仔細閱讀,並且嘗試判斷每一行執行時發生什麼情況。

我所有的Office應用程式:範例程式碼 以下是一些可嘗試的指令碼;每個指令碼都可真實的Office問題。

在Outlook中建立電子郵件 SubMakeMessage() DimOutlookMessageAsOutlook.MailItem SetOutlookMessage=Application.CreateItem(olMailItem) OutlookMessage.Subject="HelloWorld!" OutlookMessage.Display SetOutlookMessage=Nothing EndSub 請注意,您有時可能需要在Outlook中自動化電子郵件;您也可以使用範本。

刪除Excel工作表中的空白列 SubDeleteEmptyRows() SelectedRange=Selection.Rows.Count ActiveCell.Offset(0,0).Select Fori=1ToSelectedRange IfActiveCell.Value=""Then Selection.EntireRow.Delete Else ActiveCell.Offset(1,0).Select EndIf Nexti EndSub 請注意,您可以選取一欄儲存格,然後執行此巨集以刪除具有空白儲存格之所選欄中的所有列。

刪除PowerPoint中的空白文字方塊 SubRemoveEmptyTextBoxes() DimSlideObjAsSlide DimShapeObjAsShape DimShapeIndexAsInteger ForEachSlideObjInActivePresentation.Slides ForShapeIndex=SlideObj.Shapes.CountTo1Step-1 SetShapeObj=SlideObj.Shapes(ShapeIndex) IfShapeObj.Type=msoTextBoxThen IfTrim(ShapeObj.TextFrame.TextRange.Text)=""Then ShapeObj.Delete EndIf EndIf NextShapeIndex NextSlideObj EndSub 請注意,此程式碼會循迴所有投影片,並刪除所有沒有任何文字的文字方塊。

計數變數會遞減而不是遞增,因為每次程式碼刪除物件時,都會從集合中移除該物件,因此會減少計數。

將Outlook中的連絡人複製到Word SubCopyCurrentContact() DimOutlookObjAsObject DimInspectorObjAsObject DimItemObjAsObject SetOutlookObj=CreateObject("Outlook.Application") SetInspectorObj=OutlookObj.ActiveInspector SetItemObj=InspectorObj.CurrentItem Application.ActiveDocument.Range.InsertAfter(ItemObj.FullName&"from"&ItemObj.CompanyName) EndSub 請注意,此程式碼會將目前開啟的Outlook連絡人複製到開啟的Word文件。

Outlook中目前正開啟連絡人進行檢查時,這個程式碼才有效。

支援和意見反應 有關於OfficeVBA或這份文件的問題或意見反應嗎?如需取得支援服務並提供意見反應的相關指導,請參閱OfficeVBA支援與意見反應。

本文內容



請為這篇文章評分?