Visual Basic for Applications (VBA) for Office 2010 為 Office 套件中的應(yīng)用程序添加了新功能。例如,您可以對(duì) Word 文檔中的 50 個(gè)表應(yīng)用重復(fù)更改,或強(qiáng)制文檔在打開(kāi)時(shí)提示用戶進(jìn)行輸入,或高效地將聯(lián)系人從 Outlook 移入到 Excel 電子表格。
應(yīng)用程序的 Office 2010 套件提供了大量功能。可通過(guò)多種方式對(duì)文檔、電子郵件、數(shù)據(jù)庫(kù)、窗體、電子表格和演示文稿進(jìn)行創(chuàng)作、格式設(shè)置和操作。Office 2010 中的 VBA 編程的強(qiáng)大功能表現(xiàn)在,每個(gè)可使用鼠標(biāo)、鍵盤或?qū)υ捒驁?zhí)行的操作也可以使用 VBA 執(zhí)行。此外,如果某個(gè)操作可使用 VBA 完成一次,則可以同樣輕松地完成此操作 100 次或 1000 次。VBA 還可用于向 Office 應(yīng)用程序添加新功能;例如,通過(guò)專門針對(duì)您的業(yè)務(wù)需求的方式向您的文檔用戶進(jìn)行提示。
考慮在 Office 中使用 VBA 編程有以下一些令人信服的原因:
1. 自動(dòng)化和重復(fù)。VBA 對(duì)于格式設(shè)置或更正問(wèn)題的重復(fù)性解決方案十分高效??墒褂?VBA 自動(dòng)執(zhí)行的重復(fù)任務(wù)的示例包括:更改 Word 中每頁(yè)頂部的段落樣式,重新設(shè)置從 Excel 粘貼到 Word 或 Outlook 電子郵件中的多個(gè)表的格式,以及對(duì) Outlook 聯(lián)系人進(jìn)行重復(fù)更改。幾乎所有可手動(dòng)執(zhí)行的格式設(shè)置或編輯更改都能利用 VBA 完成。
2. 擴(kuò)展。有時(shí)候您可能要鼓勵(lì)(或者甚至強(qiáng)制)用戶采用不屬于標(biāo)準(zhǔn)應(yīng)用的特定方法與 Office 應(yīng)用程序或文檔交互。例如,您可能希望提示用戶在打開(kāi)、保存或打印文檔時(shí)執(zhí)行某些特定操作。
3. Office 2010 應(yīng)用程序之間的交互。利用 VBA,您可以將所有聯(lián)系人從 Outlook 移動(dòng)到 Word,或?qū)?shù)據(jù)從 Excel 電子表格移入到一組 PowerPoint 幻燈片。與復(fù)制并粘貼這種用戶交互方式相比,VBA 為您提供了更快的速度和更好的控制性。
VBA 編程是一個(gè)功能強(qiáng)大的解決方案。但是,它并非總是最佳方法。有時(shí)候,使用其他方法實(shí)現(xiàn)您的目標(biāo)會(huì)更合理。在開(kāi)始 VBA 項(xiàng)目之前,應(yīng)考慮內(nèi)置工具和標(biāo)準(zhǔn)功能。例如,如果您有耗時(shí)的編輯或布局任務(wù),則可考慮使用樣式或鍵盤快捷方式來(lái)解決該問(wèn)題。您也許能夠執(zhí)行一次任務(wù),然后使用 Ctrl+Y("重做")來(lái)重復(fù)該任務(wù)?;蛘撸部梢允褂谜_格式或模板創(chuàng)建新文檔,然后將內(nèi)容復(fù)制到新文檔中。
此直觀操作方法演示了非編程人員如何開(kāi)始使用 VBA。它介紹了如何通過(guò) VBA 對(duì)象操作 Office 文檔,并提供了簡(jiǎn)單的編程示例。
本文包含幾個(gè) VBA 宏的簡(jiǎn)單代碼。本節(jié)將討論以下主題:
如何在 Office 2010 應(yīng)用程序中啟用"開(kāi)發(fā)工具"選項(xiàng)卡
錄制宏
VBA 示例 1:更改 Excel 單元格邊框
VBA 示例 2:分支和循環(huán)
VBA 示例 3:在 Outlook 中創(chuàng)建電子郵件
VBA 示例 4:刪除 Excel 中的空行
VBA 示例 5:在 Office 應(yīng)用程序之間復(fù)制數(shù)據(jù)
若要使用 VBA,您可以使用 Visual Basic 代碼創(chuàng)建宏??梢栽?span>讀取一節(jié)找到有關(guān)如何在 VBA 中編程的信息。
啟用"開(kāi)發(fā)工具"選項(xiàng)卡
所有 Office 2010 應(yīng)用程序都使用功能區(qū)。功能區(qū)上有一個(gè)"開(kāi)發(fā)工具"選項(xiàng)卡,您可以在其中訪問(wèn) Visual Basic 編輯器和其他開(kāi)發(fā)人員工具。由于 Office 2010 在默認(rèn)情況下不顯示"開(kāi)發(fā)工具"選項(xiàng)卡,因此必須使用以下過(guò)程啟用它。
在"文件"選項(xiàng)卡上,選擇"選項(xiàng)"以打開(kāi)"選項(xiàng)"對(duì)話框。
單擊該對(duì)話框左側(cè)的"自定義功能區(qū)"。
在該對(duì)話框左側(cè)的"從下列位置選擇命令"下,選擇"常用命令"。
在該對(duì)話框右側(cè)的"自定義功能區(qū)"下,從下拉列表中選擇"主選項(xiàng)卡",然后選中"開(kāi)發(fā)工具"復(fù)選框。
單擊"確定"。
注釋 |
---|
在 2007 版的 Microsoft Office 應(yīng)用程序中,可使用 Office 按鈕打開(kāi)"選項(xiàng)"對(duì)話框。在"常用"類別下,單擊"在功能區(qū)顯示‘開(kāi)發(fā)工具’選項(xiàng)卡"。 |
啟用"開(kāi)發(fā)工具"選項(xiàng)卡后,可以輕松找到"Visual Basic"和"宏"按鈕。
在單擊"開(kāi)發(fā)工具"選項(xiàng)卡上的"宏"按鈕時(shí),會(huì)打開(kāi)"宏"對(duì)話框,該對(duì)話框允許您訪問(wèn)可從特定文檔或應(yīng)用程序訪問(wèn)的 VBA 子例程或宏。單擊"Visual Basic"按鈕將會(huì)打開(kāi) Visual Basic 編輯器,您可在其中創(chuàng)建和編輯 VBA 代碼。
錄制宏
Word 2010 和 Excel 2010 中的"開(kāi)發(fā)工具"選項(xiàng)卡上的另一個(gè)按鈕是"錄制宏"按鈕,用于自動(dòng)生成可重現(xiàn)您在應(yīng)用程序中執(zhí)行的操作的 VBA 代碼。"錄制宏"是一個(gè)很有用的工具,您可通過(guò)它了解有關(guān) VBA 的更多信息。通過(guò)閱讀生成的代碼,可讓您深入地了解 VBA,并將您作為 Office 2010 用戶需要了解的知識(shí)與作為程序員所需了解的知識(shí)緊密聯(lián)系起來(lái)。請(qǐng)注意,生成的代碼可能會(huì)讓人迷惑,因?yàn)楹昃庉嬈鞅仨殞?duì)您的意圖做一些假設(shè),而這些假設(shè)不一定準(zhǔn)確。
在 Excel 2010 中打開(kāi)新工作簿或在 Word 2010 中打開(kāi)新文檔。
單擊功能區(qū)中的"開(kāi)發(fā)工具"選項(xiàng)卡。單擊"錄制宏"并接受"錄制宏"對(duì)話框中的所有默認(rèn)設(shè)置,包括將 Macro1 作為宏名稱,將當(dāng)前工作簿作為保存位置。
單擊"確定"開(kāi)始錄制宏。請(qǐng)注意按鈕文本是如何變?yōu)?停止錄制"的。在完成要錄制的操作后單擊該按鈕。
單擊單元格 B1,然后鍵入第一個(gè)字符串:"Hello World"。停止鍵入并查看"停止錄制"按鈕;該按鈕是灰顯的,因?yàn)?Excel 2010 正在等待您完成在單元格中鍵入值的操作。
單擊單元格 B2 以完成在單元格 B1 中的操作,然后單擊"停止錄制"。
單擊"開(kāi)發(fā)工具"選項(xiàng)卡上的"宏",選擇"Macro1"(如果尚未選中),然后單擊"編輯"以在 Visual Basic 編輯器中查看 Macro1 的代碼。
您創(chuàng)建的宏應(yīng)類似于下面的代碼示例。
Sub Macro1()'' Macro1 Macro'' Range("B1").Select ActiveCell.FormulaR1C1 = "Hello World" Range("B2").SelectEnd Sub
在該代碼中,將選擇單元格 B1,然后將字符串"Hello World"應(yīng)用到已變?yōu)榛顒?dòng)狀態(tài)的單元格。文本兩邊的引號(hào)指定字符串值而不是數(shù)字值。
最后一行顯示您如何單擊單元格 B2 以再次顯示"停止錄制"按鈕。宏錄制器將記錄每次擊鍵。
以撇號(hào)開(kāi)頭并由編輯器標(biāo)為綠色的代碼行是解釋代碼或提醒您和其他程序員代碼用途的注釋。VBA 會(huì)忽略以單引號(hào)開(kāi)頭的任何行或行的一部分。在代碼中編寫(xiě)清楚而適當(dāng)?shù)淖⑨尫浅V匾?,但這方面的討論不在此直觀操作方法范圍之內(nèi)。本文后面對(duì)此代碼的引用不包括這四個(gè)注釋行。
提示 |
---|
Application 對(duì)象隱含在所有 VBA 宏中。您錄制的代碼將使用 Application 對(duì)象。 |
使用開(kāi)發(fā)工具幫助
當(dāng)宏錄制器生成代碼時(shí),它會(huì)使用復(fù)雜的算法來(lái)確定您想要的方法和屬性。如果您無(wú)法識(shí)別某個(gè)給定的屬性,那么有許多資源可幫助您。例如,在您錄制的宏中,宏錄制器生成了引用 ForumulaR1C1 屬性的代碼。此做法的含義一點(diǎn)也不明顯,因此您可以使用開(kāi)發(fā)工具幫助查找它。
在錄制的宏中選擇 ForumulaR1C1,然后按 F1。幫助系統(tǒng)將運(yùn)行快速搜索,并確定相應(yīng)主題位于 Excel 2010"幫助"的 Excel 2010"開(kāi)發(fā)工具"一節(jié)中,然后列出 ForumulaR1C1 屬性。您可以單擊鏈接來(lái)了解有關(guān)該屬性的更多信息,但在執(zhí)行此操作之前,請(qǐng)注意位于窗口底部附近的"Excel 對(duì)象模型引用"鏈接。單擊該鏈接可查看 Excel 2010 在其對(duì)象模型中用于描述工作表及其組件的對(duì)象的長(zhǎng)列表。單擊其中任一對(duì)象可查看應(yīng)用于該特定對(duì)象的屬性和方法,以及對(duì)其他相關(guān)選項(xiàng)的交叉引用。許多"幫助"條目還包含可幫助您的簡(jiǎn)短代碼示例。例如,您可以訪問(wèn) Borders 對(duì)象中的鏈接來(lái)了解如何在 VBA 中設(shè)置邊框。
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
注釋 |
---|
Borders 代碼看起來(lái)與錄制的宏不同。對(duì)象模型可能會(huì)讓人迷惑的一點(diǎn)是,可使用多種方法處理任何給定對(duì)象(此處為單元格 A1)。 |
VBA 示例 1:更改 Excel 單元格邊框
第一個(gè)示例 ExcelBorders 將單元格 A1 設(shè)置為包含值"Wow!",并將邊框樣式設(shè)置為雙線。它使用前面提到的我們?cè)?Excel 2010 幫助的"開(kāi)發(fā)工具"一節(jié)中找到的代碼。
從 Excel 中打開(kāi) Visual Basic 編輯器,從"文件"菜單中選擇"導(dǎo)入",然后選擇 ExcelBorders.bas。
Sub ExcelBorders() Worksheets(1).Range("A1").Value = "Wow!" Worksheets(1).Range("A1").Borders.LineStyle = xlDoubleEnd Sub
返回到 Excel 工作表,然后再次單擊"宏"按鈕。選擇"ExcelBorders",然后單擊"運(yùn)行"按鈕。現(xiàn)在您應(yīng)該會(huì)看到,A1 包含文本"Wow!"且具有雙線邊框。
VBA 示例 2:分支和循環(huán)
第二個(gè)示例 BranchingLooping 將檢查單元格 A1 的值,以確定它是否為"Fill"。如果為"Fill",則會(huì)用一個(gè)等于行數(shù)兩倍的數(shù)字填充下面的行(從 A2 到 A10)。如果 A1 單元格不包含值"Fill",則會(huì)顯示一個(gè)消息框提示您要這樣做。從 Excel 中打開(kāi) Visual Basic 編輯器,從"文件"菜單中選擇"導(dǎo)入",然后選擇"LoopingBranching.bas"。"分支和循環(huán)"一節(jié)將對(duì)此做更詳細(xì)的介紹。
Sub BranchingLooping() If Worksheets(1).Range("A1").Value = "Fill" Then Dim row As Integer For row = 2 To 10 Worksheets(1).Range("A" & row).Value = row * 2 Next row Else MsgBox ("Put Fill in Cell A1") End IfEnd Sub
VBA 示例 3:在 Outlook 中創(chuàng)建電子郵件
下一個(gè)示例 MakeMessage 將創(chuàng)建包含 HTML 正文的 Outlook 郵件。從 Outlook 中打開(kāi) Visual Basic 編輯器,從"文件"菜單中選擇"導(dǎo)入",然后選擇"MakeMessage.bas"。運(yùn)行該宏。
Sub MakeMessage() Dim OutlookMessage As Outlook.MailItem Set OutlookMessage = Application.CreateItem(olMailItem) OutlookMessage.Subject = "Happy New Year!" OutlookMessage.HTMLBody = "<HTML><BODY>Dear <p>Happy New Year! We have had a good year this year…</BODY></HTML>" OutlookMessage.Display Set OutlookMessage = NothingEnd Sub
注釋 |
---|
您可能希望為 Outlook 中的很多應(yīng)用程序自動(dòng)創(chuàng)建電子郵件。例如,您可能會(huì)循環(huán)訪問(wèn)所有聯(lián)系人,選擇要向其發(fā)送此郵件的聯(lián)系人(例如存在業(yè)務(wù)關(guān)系的人),并且只為這些聯(lián)系人自動(dòng)生成郵件。除使用 VBA 以外,您還可以使用模板。 |
VBA 示例 4:刪除 Excel 中的空行
另一個(gè)示例 DeleteEmptyRows 將在 Excel 中刪除選定范圍的第一列中包含空單元格的所有行。從 Excel 中打開(kāi) Visual Basic 編輯器,從"文件"菜單中選擇"導(dǎo)入",然后選擇"DeleteEmptyRows.bas"。
Sub DeleteEmptyRows() SelectedRange = Selection.Rows.Count ActiveCell.Select For i = 1 To SelectedRange If ActiveCell.Value = "" Then Selection.EntireRow.Delete Else ActiveCell.Offset(1, 0).Select End If Next iEnd Sub
該子例程的第一行將創(chuàng)建一個(gè)名為 SelectedRange 的變量,并將其設(shè)置為用戶已選擇的行的數(shù)量。請(qǐng)注意,沒(méi)有先使用 Dim 語(yǔ)句來(lái)創(chuàng)建該變量;在 Visual Basic 中,使用 Dim 是可選的。接下來(lái),將選擇活動(dòng)單元格(原始選擇范圍的左上角的單元格)?,F(xiàn)在,變量 i 將從 1 循環(huán)到用戶最初選擇的行的數(shù)量。如果活動(dòng)單元格是空的,則會(huì)刪除選定的整個(gè)行。如果活動(dòng)單元格不是空的,則會(huì)將所選單元格下移一行。
在電子表格中,使用數(shù)據(jù)填充 A 列,但將某些單元格留空。選擇所有行并運(yùn)行宏。您可以看到刪除這些行的位置。
VBA 示例 5:在 Office 應(yīng)用程序之間復(fù)制數(shù)據(jù)
最后一個(gè)示例 CopyCurrentContact 會(huì)將數(shù)據(jù)從 Outlook 中的打開(kāi)聯(lián)系人復(fù)制到打開(kāi)的 Word 文檔中。從 Word 中打開(kāi) Visual Basic 編輯器,從"文件"菜單中選擇"導(dǎo)入",然后選擇"DeleteEmptyRows.bas"。在 Outlook 中打開(kāi)一個(gè)聯(lián)系人。最后,打開(kāi)一個(gè)空的 Word 文檔,然后運(yùn)行該宏。
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
前三行創(chuàng)建幾個(gè)變量:一個(gè)用于 Outlook 應(yīng)用程序,一個(gè)用于檢查器(識(shí)別 Outlook 中打開(kāi)的項(xiàng)目),還有一個(gè)用于打開(kāi)的聯(lián)系人。第四行初始化 Outlook 變量。第五行設(shè)置檢查器,第六行使用檢查器查找打開(kāi)的聯(lián)系人。子例程的最后一行獲取全名和公司名并將其插入打開(kāi)的 Word 文檔中。
編寫(xiě) VBA 代碼:對(duì)象、屬性和方法
您可能認(rèn)為編寫(xiě)代碼是一項(xiàng)神秘或困難的工作,但您會(huì)發(fā)現(xiàn),利用某些常識(shí)和邏輯,這項(xiàng)工作也不是很難。在創(chuàng)建 Office 應(yīng)用程序時(shí)公開(kāi)可以接收指令的對(duì)象,這與為設(shè)計(jì)電話時(shí)包含可用于與之交互的按鍵很相似。按下按鍵時(shí),電話會(huì)識(shí)別指令并按照撥號(hào)順序包括對(duì)應(yīng)的號(hào)碼。在編程時(shí),您通過(guò)向應(yīng)用程序中的各個(gè)對(duì)象發(fā)送指令來(lái)與應(yīng)用程序交互。這些對(duì)象可完成很多工作,但存在相應(yīng)限制。它們只能執(zhí)行為其設(shè)計(jì)的操作,并且只按照您的指示執(zhí)行操作。
開(kāi)發(fā)人員在一個(gè)層次結(jié)構(gòu)中組織編程對(duì)象,該層次結(jié)構(gòu)稱為應(yīng)用程序的對(duì)象模型。例如,Word 具有包含 Document 對(duì)象的頂級(jí) Application 對(duì)象,Document 對(duì)象包含 Paragraph 對(duì)象,依此類推。對(duì)象模型大致反映了您在用戶界面中看到的內(nèi)容。它們是應(yīng)用程序及其功能的概念圖。
請(qǐng)注意,對(duì)象具有屬性 和方法。屬性是屬于您的對(duì)象的其他對(duì)象,而方法是對(duì)象可執(zhí)行的操作。若要訪問(wèn)屬性或方法,可在對(duì)象后放一個(gè)句點(diǎn),然后添加屬性或方法名稱。例如,表示 Excel 電子表格中的某個(gè)單元格的對(duì)象將具有 Value 屬性,該屬性返回該單元格中包含的值;該對(duì)象還具有 Select 方法,該方法可使該單元格進(jìn)入選定狀態(tài)。
從示例開(kāi)始
VBA 社區(qū)非常大;在 Web 上進(jìn)行搜索通常會(huì)獲得其執(zhí)行的操作與您要執(zhí)行的操作類似的 VBA 代碼示例。如果您找不到好的示例,請(qǐng)嘗試將任務(wù)分解為較小的單元,然后搜索每個(gè)單元;或者嘗試考慮更常見(jiàn)但又類似的問(wèn)題。從示例開(kāi)始可為您節(jié)省很多時(shí)間。
這并不意味著 Web 上有免費(fèi)又成熟的代碼供您使用。事實(shí)上,您找到的一些代碼可能存在 Bug 或錯(cuò)誤。您在網(wǎng)上或 VBA 文檔中找到的示例只是為您提供了良好的開(kāi)端。請(qǐng)記住,學(xué)習(xí)編程需要時(shí)間和思索。在您使用另一個(gè)解決方案來(lái)解決您的問(wèn)題之前,請(qǐng)問(wèn)一問(wèn)自己,VBA 是不是解決此問(wèn)題的最佳選擇。
將問(wèn)題簡(jiǎn)化 - 先解決一部分問(wèn)題
編程可能會(huì)很快變得復(fù)雜。將問(wèn)題分解為盡可能小的邏輯單元,然后獨(dú)立編寫(xiě)并測(cè)試每個(gè)單元,這一點(diǎn)很重要,尤其是對(duì)初學(xué)者。如果您有太多代碼,而這些代碼將您搞糊涂了,那么請(qǐng)停止工作,將問(wèn)題撇在一邊。當(dāng)您回來(lái)處理這個(gè)問(wèn)題時(shí),可以將它的一小部分復(fù)制到新模塊中,解決這一部分問(wèn)題,運(yùn)行代碼,測(cè)試代碼以確保其正常工作。然后,繼續(xù)下一個(gè)部分。
Bug 和調(diào)試
編程錯(cuò)誤主要有兩種:語(yǔ)法錯(cuò)誤,即違反編程語(yǔ)言的語(yǔ)法規(guī)則;運(yùn)行時(shí)錯(cuò)誤,即看上去語(yǔ)法正確,但在 VBA 嘗試執(zhí)行代碼時(shí)失敗。
盡管修復(fù)起來(lái)很讓人郁悶,但語(yǔ)法錯(cuò)誤還是很容易發(fā)現(xiàn)。如果您在代碼中鍵入了錯(cuò)誤的語(yǔ)法,Visual Basic 編輯器會(huì)發(fā)出嘟嘟聲并閃爍。運(yùn)行時(shí)錯(cuò)誤比較難發(fā)現(xiàn),因?yàn)榫幊陶Z(yǔ)法看上去正確,但代碼在 VBA 嘗試執(zhí)行它時(shí)會(huì)失敗。
了解如何對(duì)更長(zhǎng)、更復(fù)雜的程序更加謹(jǐn)慎地使用調(diào)試程序是一個(gè)不錯(cuò)的主意。至少應(yīng)了解如何設(shè)置斷點(diǎn)以在要檢查代碼的位置停止執(zhí)行代碼,如何添加監(jiān)視點(diǎn)以查看不同變量和屬性在代碼運(yùn)行過(guò)程中的值,以及如何逐行單步執(zhí)行代碼。所有這些選項(xiàng)在"調(diào)試"菜單中均有提供,謹(jǐn)慎的調(diào)試程序用戶通常會(huì)記住附帶的鍵盤快捷方式。
使用參考材料
若要打開(kāi) Office 2010 幫助中內(nèi)置的"開(kāi)發(fā)人員參考",請(qǐng)單擊功能區(qū)中的問(wèn)號(hào)或按 F1,這樣即可從任何 Office 2010 應(yīng)用程序中打開(kāi)幫助參考。然后,在"搜索"按鈕右側(cè),單擊下拉箭頭來(lái)篩選內(nèi)容。單擊"開(kāi)發(fā)人員參考"。如果您在左面板中沒(méi)有看到目錄,請(qǐng)單擊小的書(shū)籍圖標(biāo)來(lái)打開(kāi)它,然后從該處展開(kāi)對(duì)象模型參考。
花時(shí)間瀏覽對(duì)象模型參考是值得的。在了解要使用的 VBA 語(yǔ)法和 Office 2010 應(yīng)用程序的對(duì)象模型的基礎(chǔ)知識(shí)后,您就能從主觀猜測(cè)轉(zhuǎn)換到行之有法的編程。
此外,Microsoft Office 開(kāi)發(fā)中心是查閱文章、技巧和社區(qū)信息的優(yōu)秀門戶。
搜索論壇和組
所有程序員都會(huì)時(shí)常遇到困難,即使在讀完他們可以找到的所有參考文章,并且整夜無(wú)眠地思考解決該問(wèn)題的各種方法后都無(wú)濟(jì)于事。幸運(yùn)的是,Internet 上已經(jīng)培育出了一個(gè)開(kāi)發(fā)人員社區(qū),他們可以互相幫助來(lái)解決編程問(wèn)題。
每次在 Web 上搜索"office 開(kāi)發(fā)人員論壇"都會(huì)顯示幾個(gè)討論組。您也可以搜索"office 開(kāi)發(fā)"或問(wèn)題描述來(lái)查找論壇、博客帖子和文章。
如果您已經(jīng)嘗試了各種方法來(lái)解決問(wèn)題,那么就不要害怕將您的問(wèn)題發(fā)布到開(kāi)發(fā)人員論壇上。這些論壇接受來(lái)自程序員新手的帖子,許多經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員都很樂(lè)于提供幫助。
下面是在向開(kāi)發(fā)人員論壇發(fā)布內(nèi)容時(shí)需遵守的幾點(diǎn)規(guī)定:
在發(fā)布之前,應(yīng)在網(wǎng)站上查看常見(jiàn)問(wèn)題解答或論壇成員希望您遵循的準(zhǔn)則。確保所發(fā)布的內(nèi)容符合這些準(zhǔn)則,并且位于論壇的正確區(qū)域中。
包含清楚完整的代碼示例,如果代碼是較長(zhǎng)的一個(gè)代碼段的一部分,請(qǐng)考慮編輯您的代碼以使它對(duì)其他用戶一目了然。
清楚簡(jiǎn)明地描述您的問(wèn)題,并概述您為解決此問(wèn)題已經(jīng)采取的任何步驟?;c(diǎn)時(shí)間盡力寫(xiě)好帖子,尤其在您慌亂或匆忙時(shí)。采用對(duì)首次閱讀問(wèn)題陳述的讀者合理的方式介紹情況。
要有禮貌,并表達(dá)您的感激之情。
進(jìn)一步了解編程
雖然本文很短且只觸及了 VBA 和編程的皮毛,但我們希望它足以助您入門。本節(jié)簡(jiǎn)短地討論了幾個(gè)其他關(guān)鍵主題。
變量
除了操作應(yīng)用程序已創(chuàng)建的對(duì)象之外,您可能還希望創(chuàng)建自己的對(duì)象來(lái)存儲(chǔ)值或?qū)ζ渌麑?duì)象的引用以在應(yīng)用程序中臨時(shí)使用。這些對(duì)象稱為變量。
若要在 VBA 中使用某個(gè)變量,則必須使用 Dim 語(yǔ)句標(biāo)識(shí)該變量表示的對(duì)象類型。然后,您可以設(shè)置該變量的值并使用它來(lái)設(shè)置其他變量或?qū)傩浴?/p>
下面的代碼示例將創(chuàng)建一個(gè)名為 i 的變量,該變量將存儲(chǔ)一個(gè)整型(即,一個(gè)整數(shù),而不是小數(shù)或分?jǐn)?shù)部分)。
Dim i As Integer
分支和循環(huán)
本文中的簡(jiǎn)單程序從上往下執(zhí)行代碼,一次只執(zhí)行一行。編程的真正功能將在您使用根據(jù)指定的一個(gè)或多個(gè)條件確定要執(zhí)行哪些代碼行的選項(xiàng)時(shí)表現(xiàn)出來(lái)。您可以擴(kuò)展這些功能,即使您可以多次重復(fù)操作時(shí)也如此。If 語(yǔ)句會(huì)檢查內(nèi)容是否為 true,然后執(zhí)行此語(yǔ)句后的所有步驟,直到到達(dá) Else 或 End If。For 語(yǔ)句將重復(fù)它本身與 Next 語(yǔ)句之間的所有步驟,并且每次都在變量范圍內(nèi)增大變量的值。下面的代碼示例演示如何使用 If 和 For 語(yǔ)句來(lái)檢查單元格中的值,然后填充幾個(gè)其他的單元格。如果單元格中的值不是預(yù)期值,則還會(huì)顯示一個(gè)消息框。
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 IfEnd Sub
聯(lián)系客服