版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 2 章 VBA 程序設計2.1工作簿和工作表一、創(chuàng)建和打開工作簿W(wǎng)orkbooks.Add創(chuàng)建一個新的工作簿Set NewBook=Workbooks.Add建工作簿,用對象變量表示NewBook.SaveAs File name:=Test.xls工作簿另存為Workbooks.Open(D:Test.xls)打開工作簿二、引用工作表Worksheets(1).Activate激活第一張工作表Sheets(4).Activate激活四張工作表Worksheets(Sheet1).Activate激活指定的工作表Sheets(Chart1).Activate激活圖表Chart1”2.2單元
2、格和區(qū)域一、引用單元格和區(qū)域1用A1樣式記號引用單元格和單元格區(qū)域表2.1使用Range屬性的A1樣式引用示例引用含義Ra nge(A1)單元格A1Ran ge(A1:B5)從單元格A1到單元格B5的區(qū)域Ran ge(C5:D9,G9:H16)多塊選定區(qū)域Ran ge(A:A)A列Ra nge(1:1)第一行Ra nge(A:C)從A列到C列的區(qū)域Ran ge(1:5)從第一行到第五行的區(qū)域Ran ge(1:1,3:3,8:8)第1、3和8行Ra nge(A:A,C:C,F:F)A、C和F列【例2.6】將工作表“Sheet1”中單元格區(qū)域A1:D5的字體設置為加粗。Sheets(Sheet1)
3、.Ra nge(A1:D5).Fo nt.Bold=True2.用編號引用單元格【例2.7】將Sheet1上的單元格A6的Value屬性設置為10Worksheets(Sheet1).Cells(6,1).Value=10【例2.9】清除活動工作簿中Sheet1上的所有單元格的內(nèi)容Worksheets(Sheet1).Cells.ClearCo nte nts【例2.10】假設工作簿中Sheet1的A列是員工姓名(不超過50人),Sheet2的A列是員工 姓名、B列是對應的電話號碼?,F(xiàn)在需將所有員工的電話號碼填寫到Sheet1中的B列(注:Sheet1中姓名“李三”在Sheet2中可能為“李三
4、”,中間沒有空格)。3.引用行和列【例2.11】將Sheet1上第一行單元格區(qū)域的Font對象Bold屬性設置為True。Worksheets(Sheet1).Rows(1).Fo nt.Bold=True表2.2 Rows和Columns屬性的應用示例引用含義Rows(1)第一行Rows工作表上所有的行Colu mn s(1)第一列Colum ns(A)第一列Colu mns工作表上所有的列【例2.12】將活動工作表上的第一行、第三行和第五行的字體設置為加粗。Set myU n=Un io n(Rows(1),Rows(3),Rows(5)myUn.Fon t.Bold=True4.用快捷記
5、號引用單元格【例2.13】將工作表“Sheet1”的單元格區(qū)域“A1:B5”內(nèi)容清除。Worksheets(Sheet1).A1:B5.CIearCo nte nts5.引用命名區(qū)域【例2.14】將當前工作表中名為“AA”的單元格區(qū)域設置為30。AA.Value=30【例2.15】用GoTo方法激活工作簿“Book1.xls”,選定區(qū)域“AA”,然后清除該區(qū)域內(nèi)容。Applicatio n. Goto Refere nce:=Book1.xls!AASelectio n.ClearC on te nts【例2.16】用ForEach.Next循環(huán)語句在命名區(qū)域中的每一個單元格上循環(huán)。如果該區(qū)域
6、中 的任一單元格的值超過25,就將該單元格的顏色更改為黃色。For Each c In Ran ge(AA)If c.Value25 The nc.In terior.ColorI ndex=27End IfNext c6.相對于其他單元格來引用單元格【例2.17】將位于活動單元格下一行和右邊三列的單元格的內(nèi)容設置為雙下劃線格式。ActiveCell.Offset(1,3).Fo nt.U nderli ne=xlDouble7.用Range對象引用單元格【例2.18】將Sheet1上的單元格區(qū)域A1:D5賦予該變量,隨后用該變量代替該區(qū)域?qū)ο螅?填充隨機函數(shù)。Set myRa nge=Wor
7、ksheets(Sheet1).Ra nge(A1:D5)myRa nge.Formula=RAND()8.引用多個單元格區(qū)域【例2.19】清除當前工作表上三個區(qū)域的內(nèi)容。Ra nge(C5:D9,G9:H16,B14:D18).CIearCo ntentsRa nge(MyRa nge,YourRa nge,HisRa nge).CIearCo ntents【例2.20】將組合區(qū)域的字體設置為加粗。Set r仁Sheets(Sheet1).Ra nge(A1:B2)Set r2=Sheets(Sheet1).Ra nge(C3:D4)Set myMR=U nion (r1,r2)myMR.F
8、o nt.Bold=True【例2.21】計算選定區(qū)域中的數(shù)目,如果有多個區(qū)域,就顯示一則警告消息。If Selectio n.Areas.Cou nt1 The nMsgBox 請不要選擇多個區(qū)域!”End If二、 在單元格區(qū)域中循環(huán)【例2.22】 將單元格區(qū)域C1:C20所有絕對值小于10的數(shù)字都設置紅色。For Cnt=1To 20Set curC=Worksheets(Sheet1).Cells(Cnt,3)If Abs(curC.Value)10 Then curC.Font.ColorIndex=3 Next Cnt求區(qū)域末尾行號常用的方法:r=Range(A1).End(xlD
9、own).Row 求A1單元格數(shù)據(jù)區(qū)末尾行號r=Cells(1,1).End(xlDown).Row 求A1單元格數(shù)據(jù)區(qū)末尾行號r=Range(A65536).End(xlUp).Row 求A列數(shù)據(jù)區(qū)末尾行號r=Cells(65536,1).End(xlUp).Row 求A列數(shù)據(jù)區(qū)末尾行號r=Columns(1).End(xlDown).Row求A列數(shù)據(jù)區(qū)末尾行號求區(qū)域末尾列號常用的方法:c=Range(A1).End(xlToRight).Column 求A1單元格數(shù)據(jù)區(qū)末尾列號c=Cells(1,1).End(xlToRight).Column求A1單元格數(shù)據(jù)區(qū)末尾列號c=Cells(1,
10、256).End(xlToLeft).Column 求第1行數(shù)據(jù)區(qū)末尾列號c=Rows(1).End(xlToRight).Column 求第1行數(shù)據(jù)區(qū)末尾列號 【例2.23】將單元格區(qū)域A1:D10所有絕對值小于10的數(shù)字都設置為紅色。For Each c In Worksheets(Sheet1).Range(A1:D10).CellsIf Abs(c.Value)10 Then c.Font.ColorIndex=3 Next【例2.24】將活動單元格區(qū)域所有絕對值小于10的數(shù)字都設置為紅色。For Each c In ActiveCell.CurrentRegion.CellsIf A
11、bs(c.Value)10 Then c.Font.ColorIndex=3 Next三、選定和激活單元格1.使用Select方法和Selection屬性【例2.25】將A1:B1單元格中的內(nèi)容加粗。Range(A1:B1).Select Selection.Font.Bold=True也可以用下面語句:Range(A1:B1).Font.Bold=True2.選定活動工作表上的單元格【例2.26】將Sheetl中的一行復制到Sheet2上。Worksheets(Sheet1).Rows(1).CopyWorksheets(Sheet2).SelectWorksheets(Sheet2).Ro
12、ws(1).SelectWorksheets(Sheet2).Paste3.激活選定區(qū)域內(nèi)的單元格【例2.27】選定一個區(qū)域,激活區(qū)域內(nèi)的一個單元格,但并不改變選定區(qū)域。Range(A1:D4).SelectRange(B2).Activate四、處理三維區(qū)域【例2.28】設置三維單元格區(qū)域的邊框格式。Sheets(Array(Sheet2,Sheet3,Sheet5).SelectRange(A1:H1).SelectSelection.Borders(xlBottom).LineStyle=xlDouble【例2.29】用FillAcrossSheets方法將Sheet2上指定區(qū)域的格式和
13、內(nèi)容復制到該工作簿中所 有工作表上的相應區(qū)域中。第4頁Worksheets.FillAcrossSheets(Worksheets(Sheet2).Range(A1:H1)五、處理活動單元格【例2.30】使單元格B5成為活動單元格,然后將其字體設置為加粗。Worksheets(Sheet1).Range(B5).ActivateActiveCell.Font.Bold=True【例2.31】在選定區(qū)域內(nèi)的活動單元格中插入文本, 然后將活動單元格右移一格, 但并不更 改選定區(qū)域。Range(A1:D10).SelectActiveCell.Value=姓名”ActiveCell.Offset(0
14、,1).Activate【例2.32】將選定區(qū)域擴充到與活動單元格相鄰的包含數(shù)據(jù)的單元格中。ActiveCell.CurrentRegion.Select其中,CurrentRegion屬性返回由空白行和空白列所包圍的單元格區(qū)域。范例2-1從區(qū)域中刪除重復的內(nèi)容在Excel當前工作表B列存放一些數(shù)據(jù),現(xiàn)要列出這些數(shù)據(jù)互不重復的值, 放到D列。1建函數(shù)UnqV2編寫子程序nodupa范例2-2在Excel工作表列出指定文件夾中所有文件的目錄信息。1進入VBE在工具”菜單中選擇引用”項,在引用”對話框中選中“Microsoft ScriptingRun time”項。2建立子程序“列文件目錄”范例
15、2-3自動生成年歷子程序GenerateCalendar(分析)2.3工作表函數(shù)與圖形一、在VBA中使用Excel工作表函數(shù)1.在VBA中調(diào)用工作表函數(shù)【例2.33】使用Min工作表函數(shù)求出區(qū)域中的最小值。Set myR=Worksheets(Sheet1).Range(A1:C10)answer=Application.WorksheetFunction.Min(myR)MsgBox answer注意:VBA函數(shù)和Excel工作表函數(shù)可能同名,但作用和引用方式是不同的。2.在單元格中插入工作表函數(shù)【例2.34】將RAND(隨機數(shù))工作表函數(shù)賦給Sheet1上A1:B3區(qū)域的Formula屬性
16、。Worksheets(Sheet1).Range(A1:B3).Formula=RAND()【例2.35】下面程序使用工作表函數(shù)Pmt來計算住宅抵押貸款的支付額。Sub Fml()Static lAmt,lInt,lTrm lAmt=Application.InputBox(Prompt:=貸款額:, Default:=lAmt,Type:=1)lInt=Application.InputBox(Prompt:=年利率:,Default:=lInt,Type:=1) lTrm=Application.InputBox(Prompt:=年限:,Default:=lTrm,Type:=1) lP
17、mt=Application.WorksheetFunction.Pmt(lInt/1200,lTrm*12,lAmt)MsgBox月支付額:&Format(IPmt,Curre ncy)End Sub二、處理圖形對象1.設置圖形的屬性【例2.36】設置指定圖形的前景色。第5頁Worksheets(1).Shapes(1).FiII.ForeCoIor.RGB=RGB(255,0,0)2.同時對多個圖形應用屬性或方法對多個選定圖形通過構(gòu)造ShapeRange集合,并直接對該ShapeRange集合應用適當?shù)膶?性和方法,可執(zhí)行同一操作。也可在圖形的Shapes集合或ShapeRange
18、集合中循環(huán),對每個單獨的Shape對象應用適 當?shù)膶傩院头椒▉韴?zhí)行該操作。3.創(chuàng)建ShapeRange集合【例2.37】創(chuàng)建選定的圖形ShapeRange對象,然后填充綠色。Set sr=SeIection.ShapeRange sr.FiII.ForeCoIor.SchemeCoIor=17注:先選中圖形4.對ShapeRange集合應用屬性或方法【例2.38】假設在當前工作表上建立了兩個圖形“Sp1”和“Sp2”。下面程序構(gòu)造包含圖形“Sp1”和“Sp2”的圖形區(qū)域,并對這些圖形應用漸變填充格式。Set myD=WorkSheets(1)Set myR=myD.Shapes.Range(A
19、rray(Sp1,Sp2)myR.FiII.PresetGradient msoGradientHorizontaI,1,msoGradientBrass5.在Shapes集合或ShapeRange集合中循環(huán)【例2.39】在當前工作表上對所有圖形進行循環(huán),更改每個自選圖形的前景色。Set myD=WorkSheets(1)For Each sh In myD.ShapesIf sh.Type=msoAutoShape Then sh.FiII.ForeCoIor.RGB=RGB(255,0,0) sh.FiII.VisibIe=msoTrueEnd IfNext【例2.40】對當前活動窗口中所
20、有選定的圖形構(gòu)造一個ShapeRange集合,并設置每個選定圖形的填充色。For Each sh In ActiveWindow.SeIection.ShapeRange sh.FiII.VisibIe=msoTruesh.FiII.SoIidsh.Fill.ForeColor.SchemeColor=57Next注:先選中圖形范例2-4多元一次方程組求解界面初始化程序設計 求解方程組程序設計 計算系數(shù)矩陣a的逆矩陣(用工作表函數(shù)MInverse) 逆矩陣與向量b進行矩陣相乘得到向量x(用工作表函數(shù)MMult)求矩陣行列式的值(用工作表函數(shù)MDeterm)范例2-5創(chuàng)建動態(tài)三維圖表1選中A3:
21、D9區(qū)域,單擊“圖表向?qū)А卑粹o,創(chuàng)建“三維柱形圖”,插入當前工作表。2錄制新宏:在繪圖區(qū)快捷菜單上選擇“設置三維視圖格式”項,設置上下仰角、左右旋轉(zhuǎn)值均為0,得到有關(guān)的語句。3編寫子程序“動態(tài)效果2.4 Word文檔操作一、使用文本1將文本插入文檔【例2.41】在活動文檔的末尾插入字符“#”。ActiveDocument.Content.InsertAfter Text:=#【例2.42】在所選內(nèi)容之前或光標位置之前插入字符“*”。第6頁Selection.InsertBefore Text:=*2.從文檔返回文本【例2.43】返回選定的文本。strT=Selection.Text【例2.44
22、】返回活動文檔中的第一個單詞。sFW=ActiveDocument.Words(1).Text【例2.45】刪除Word當前文檔選定部分的多余空格。str_in=Trim(Selection.text) str_out=For i=1 To Len(str_in)strch=Mid(str_in,i,1)If strch Or Right(str_out,1) Thenstr_out=str_out&strchEnd IfNext iSelection.text=str_out3.查找和替換【例2.46】查找并選定文字。With Selection.Find.Text=VBA.Exec
23、uteEnd With注:可通過宏錄制獲得【例2.47】查找而不選定文字。With ActiveDocument.Content.Find.Text=VBA.Forward=True.Execute If.Found=True Then.Parent.Bold=TrueEnd With使用Execute方法的參數(shù),執(zhí)行結(jié)果相同。Set myR=ActiveDocument.ContentmyR.Find.Execute FindText:=VBA,Forward:=TrueIf myR.Find.Found Then myR.Bold=True【例2.48】查找并替換文本。With Selec
24、tion.Find.Text=VBA.Replacement.Text=VisualBasic.Execute Replace:=wdReplaceAllEnd With【例2.49】查找并替換格式。With ActiveDocument.Content.Find.Font.Bold=True.Replacement.Font.Bold=False.Execute FindText:=,ReplaceWith:=, Format:=True,Replace:=wdReplaceAll End With4.將格式應用于文本【例2.50】將格式應用于選定內(nèi)容。WithSelection.FontN
25、ame=楷體_GB2312第7頁.Size=16End WithWith Selecti on .ParagraphFormat.LineUn itBefore=0.5.LineUnitAfter=0.5End With【例2 . 5 1】將格式應用于某一區(qū)域。Set rgF=ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(1).Range.Start,_End:=ActiveDocument.Paragraphs(3).Range.End)With rgF.Font.Name=楷體_GB2312.Size=16End With二、使
26、用Word對象1.選定文檔中的對象【例2.52】選定活動文檔中的第一個表格。ActiveDocument.Tables(1).Select【例2.53】選定活動文檔中的前四個段落。Set RnP=ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(1).Range.Start,_End:=ActiveDocument.Paragraphs(4).Range.End)RnP.Select2.將Range對象賦給變量【例】將活動文檔中的第一個和第二個單詞賦給變量Range1和Range2Set Range1=ActiveDocument.Wo
27、rds(1)Set Range2=ActiveDocument.Words(2)【例】將一個Range對象變量的值送給另一個Range對象變量Set Range2=Range1【例】創(chuàng)建一個Range1對象的新副本Range2Set Range2=Range1.Duplicate3.修改文檔的某一部分【例】將所選內(nèi)容的第一個單詞復制到“剪貼板” 。Selection.Words(1).Copy【例】將活動文檔的第一段復制到“剪貼板” 。ActiveDocument.Paragraphs(1).Range.Copy【例】設置活動文檔中第一個單詞為大寫。ActiveDocument.Words(1
28、).Case=wdUpperCase【例】將當前節(jié)的下邊距設為0.5英寸。Selection.Sections(1).PageSetup.BottomMargin=InchesToPoints(0.5)【例】將活動文檔的字符間距設為兩倍。ActiveDocument.Content.ParagraphFormat.Space2【例2.54】創(chuàng)建一個Range對象,引用活動文檔的前10個字符,然后利用該對象設置字符 的字號。Se trgTC=ActiveDocument.Range(Start:=0,End:=10) rgTC.Font.Size=204引用活動文檔元素【例】將邊框應用于選定內(nèi)容
29、的第一段Selection.Paragraphs(1).Borders.Enable=True【例2.55】將底紋應用于選定內(nèi)容中第一張表格的首行。第8頁If Selection.Tables.Count=1 ThenSelection.Tables(1).Rows(1).Shading.Texture=wdTexture25PercentElseMsgBox 您選擇的區(qū)域沒有包含表!End If【例2.56】將底紋應用于選定內(nèi)容中每張表格的首行。Dim tbl AsTableIf Selection.Tables.Count=1 ThenFor Each tbl In Selection.T
30、ablestbl.Rows(1).Shading.Texture=wdTexture30PercentNext tblEnd If5.處理表格【例2.57】創(chuàng)建一張表格,插入文字,并應用格式。Set docA=ActiveDocumentSet tblN=docA.Tables.Add(Range:=docA.Range(Start:=0,End:=0), NumRows:=3,NumColumns:=4)C=1For Each celT In tblN.Range.CellscelT.Range.lnsertAfter內(nèi)容&CC=C+1Next celTtblN.AutoFormat
31、Format:=wdTableFormatColorful2,ApplyBorders:=True,ApplyFont:=True,ApplyColor:=True【例2.58】在表格單元格中插入文字。With ActiveDocument.Tables(1).Cell(Row:=1,Column:=1).Range.Delete.lnsertAfter Text:=新內(nèi)容End With【例2.59】返回表格單元格中的文字。Set tbl=ActiveDocument.Tables(1)For Each cel ln tbl.Rows(1).CellsSet rng=cel.Rangerng
32、.MoveEnd Unit:=wdCharacter,Count:= -1 取消一個非正常字符MsgBox rng.TextNext cel【例2.60】將表格單元格內(nèi)容送數(shù)組。Dim strC() As StringWith ActiveDocument.Tables(1).RangeCes=.Cells.CountReDim strC(Ces)C=1For Each cel ln.CellsSet rng=cel.Range第9頁rng.MoveEnd Unit:= wdCharacter,Count:= -1 取消一個非正常字符strC(C)=rngC=C+1Next celEnd Wi
33、th6.處理文檔【例2.61】新建文檔Set docN=Documents.AddWith docN.Content.Font.Name=楷體_GB2312.SaveAsFileName:=test.docEnd With【例2.62】打開文檔Documents.OpenFile Name:=C:litest.doc【例2.63】保存文檔Documents(tmp.doc).SaveActiveDocument.SaveAs FileName:=tmp2.doc【例2.64】關(guān)閉文檔Documents(Sales.doc).Close SaveChanges:=wdSaveChanges【例2
34、.65】激活文檔For Each doc In DocumentsIf InStr(doc.Name,Doc2.doc) Thendoc.ActivateEnd IfNext doc范例2-6 Word表格計算1在Word中建立一個工資表格。2編寫子程序2.5控件與窗體一、在Excel工作表上使用控件1.“窗體”工具欄控件在“窗體”工具欄中單擊需要的控件。2在工作表上拖動鼠標畫出一個矩形(控件的大小)。3在控件上右擊,選擇“設置控件格式”?!纠繚L動條控件: “控制”卡, “單元格鏈接” ;復選框控件: “控制”卡, “單元格鏈接” ; 給控件改名。2.“控件工具箱”工具欄控件設計模式可以對控
35、件的屬性、代碼等進行設計。 運行模式可執(zhí)行代碼,完成相應的動作?!皩傩浴贝翱谠O置或顯示控件的屬性?!安榭创a”一一可以進入VBA編輯器環(huán)境,查看或編寫控件的代碼。3.在工作表上處理控件【例2.66】向當前工作簿的第一張工作表添加命令按鈕。第10頁Worksheets(1).OLEObjects.AddFormsmandButton.1”, _ Left:=10,Top:=10,Height:=20,Width:=100【例2.67】滾動工作簿窗口,使CommandButton1位于窗口的左上角。Set t=Sheet1mandButton1LeftCellWith ActiveWindow.S
36、crollRow=t.Row.ScrollColumn=t.ColumnEnd With二、在Word文檔中使用控件1.向文檔中添加控件用“控件工具箱”工具欄2.設置控件屬性在設計模式下,打開“屬性”窗口。3.初始化控件【例2.68】向列表框添加數(shù)據(jù)。With ThisDocument.ListBox1.AddItemNorth.AddItemSouth.AddItemEast.AddItemWestEnd With4.編寫事件過程雙擊窗體或控件以進入代碼編輯環(huán)境, 再從“過程”下拉列表框內(nèi)選擇事件, 然后進行編碼。三、用戶窗體1創(chuàng)建用戶窗體1選擇“工具|宏|VisualBasic編輯器”菜單
37、或用Alt+F11快捷鍵,打開VBA編輯器。2在VBA編輯器中選擇工具欄上的“插入用戶窗體”按鈕或者在“插入”菜單選“用戶窗 體”項。3在用戶窗體上添加控件。4設置控件屬性2運行用戶窗體在VBA編輯器中選擇該窗體,單擊“運行”菜單“運行子過程/用戶窗體”或工具欄上對應的按鈕。用VBA代碼顯示用戶窗體,可用Show方法。【例】顯示名為“UserForm1”的用戶窗體UserForm1.Show3.代碼運行時使用控件值【例2.69】運行窗體后,在兩個文字框中任意輸入信息,單擊“確定”按鈕,兩個文字框的 內(nèi)容會被保存到模塊的全局變量中, 然后卸載用戶窗體。 再次運行窗體時, 保存在模塊的全 局變量的
38、值會重新顯示在文字框中。1創(chuàng)建一個用戶窗體,放兩個文字框TextBoxI和TextBox2,個命令按鈕cmdOk,設置其Caption屬性為“確定” 。2插入一個模塊并在模塊中用下面語句聲明兩個全局變量。Public peID,strR As String3雙擊用戶窗體,為Initialize事件編寫如下程序:Private Sub UserForm_Initialize()TextBox1.Text=peIDTextBox2.Text=strR第11頁End Sub4雙擊命令按鈕,為其Click事件編寫如下程序:Private Sub CmdOk_Click()peID=TextBox1.T
39、extstrR=TextBox2.TextUnload MeEnd Sub【例2.70】新建一個窗體, 放置兩個按鈕和一個文字框控件。 按鈕的標題分別定義為 “顯示” 和“清除”。單擊“顯示”按鈕,在文字框中顯示一行文字,單擊“清除”按鈕,清除文字 框中的文字。設計:1進入VBA編輯環(huán)境,打開“工程資源管理器”窗口,插入一個用戶窗體。2在窗體上放置兩個命令按鈕和一個文字框。3右擊命令按鈕,選“屬性”,設置Caption屬性值為“顯示”、“清除”。4雙擊“顯示”命令按鈕,輸入如下代碼:Me.TextBoxl.SetFocusMe.TextBox1.Text=你好!歡迎學習VBA”(可簡化)5雙擊
40、“清除”命令按鈕,編寫代碼如下:Me.TextBox1.Text=6雙擊用戶窗體,為其Activate事件編寫如下代碼:Me.Caption=歡迎!”運行:選“運行”菜單的“運行子過程/用戶窗體”項,或按F5鍵。范例2-7在Word文檔中統(tǒng)計指定字符的出現(xiàn)次數(shù)1定義窗體和控件建一窗體Useform1,設置caption屬性為“字符統(tǒng)計”。在窗體中放置以下控件:復選框CheckBox1,Caption=“區(qū)分大小寫”。文字框TextBox1。命令按鈕CommandButton1,Caption=“統(tǒng)計”。標簽Label1,Caption=“輸入您要統(tǒng)計的字符(或漢字):”2錄制代碼光標定位(或選
41、中文檔),查找,下一處3相關(guān)知識Selection.Find.Found()函數(shù)為真,說明找到了指定的字符。4加工代碼5運行運行窗體,輸入要統(tǒng)計的字符,單擊“統(tǒng)計”按鈕。范例2-8求dic文檔中的單詞對doc文檔的覆蓋率1建立兩個Word文檔,分別保存為doc.doc和dic.doc文件。2在dic文檔中輸入一些常用詞匯構(gòu)成被測試的詞匯表。后邊將利用VBA程序統(tǒng)計這個詞匯表對各類文章的單詞覆蓋率。3進入VBA編輯環(huán)境,在dic工程中插入一個模塊,在模塊中建立子程序xnt。4在dic文檔中創(chuàng)建一個自定義工具欄,指定工具欄可用于dic文檔(而不是Normal文第12頁檔),并將前面建立的子程序cn
42、t指定給工具欄按鈕。5打開doc文檔,輸入或粘貼任意文本文檔。該文檔是用來進行測試的抽樣。6單擊dic自定義工具欄的按鈕,執(zhí)行VBA程序,進行測試,將得到結(jié)果。2.6使用Office命令欄命令欄一一工具欄、菜單欄、快捷菜單。一、添加和修改工具欄1.對工具欄作運行時間修改表2.3命令欄按鈕常用的屬性和方法屬性或方法說明CopyFace將指定按鈕的圖符復制到“剪貼板”上。第13頁PasteFace將“剪貼板”上的內(nèi)容粘貼到指定按鈕的圖符上。Id指定代表按鈕內(nèi)置函數(shù)的值。State指定按鈕的外觀或狀態(tài)??蛇x值:msoButt on Dow n、msoButt onM ixed、msoButt onU
43、p。Style指定按鈕圖符是顯示其圖標還是顯示其標題??蛇x值:msoButt on Automatic、msoButt onlcon、msoButt on Capti on、msoButt onlconan dCapti on、msoButt onlconAn dCaptio nBelow、msoButt onlconAn dWrapCaptio n、msoButt onlconAn dWrapCaptio nBelow、msoButtonWrapCaption。On Actio n指定在用戶單擊按鈕、顯示菜單或更改組合框控件的內(nèi)容時所運行的過程。Visible指定控件對用戶是顯示還是隱藏。E
44、n abled使一個命令欄生效或失效。失效的命令欄名不顯示在有效命令欄列表中?!纠?.71】在Word中創(chuàng)建包含一個命令按鈕的命令欄,用代碼改變按鈕外觀。Sub test()Set myBar=Comma ndBars.Add(Name:=cbt,Positi on:=msoBarTop) myBar.Visible=TrueSet oldc=myBar.Co ntrols.Add(Type:=msoCo ntrolButt on ,ID:=23)oldc.O nActio n=Cha ngeFacesEnd SubSub Chan geFaces()Set n ewc=Comma ndBar
45、s .FindCon trol(Type:=msoC on trolButt on ,ID:=17)n ewc.CopyFaceSet oldc=Comma ndBars(cbt).Co ntrols(1)oldc.PasteFaceEnd Sub2.添加和修改組合框控件表2.4組合框常用屬性和方法屬性或方法說明Add如果要在命令欄中添加一個組合框控件,可為Type參數(shù)指疋以下MsoControlType常量之一:msoControlEdit、msoControlDropdown或msoControlComboBox。Addltem在下拉式列表框或組合框的下拉式列表區(qū)中添加一個列表項??蔀橐延?/p>
46、列表中的新項指定一個索引號,但其數(shù)值不能大于列表中的項目數(shù),否則Addltem方法失敗。Capti on為組合框控件指疋標簽。如果將Style屬性設置為msoComboLabel,那么該標簽將在該控件旁顯示。Style確疋指疋控件的標題是否顯示在該控件旁。該值可設置為MsoComboStyle的以下常量之一:msoComboLabel(顯示)或msoComboNormal(不顯示)。On Actio n指定當用戶改變組合框控件的內(nèi)容時要運行的過程?!纠?.72】在Word自定義工具欄中添加一個組合框,并給該控件指定一個過程。Sub test()Set myBar=Comma ndBars.Ad
47、d(Name:=Custom,Positi on:=msoBarTop,Temporary:=True)myBar.Visible=True第14頁Set n ewCombo=myBar.C on trols.Add(Type:=msoC on trolComboBox)With n ewCombo.AddltemQ1.AddltemQ2.AddItemQ3.AddItemQ4.Style=msoComboNormal.OnAction=STOQ ”End WithEnd Sub二、添加和管理菜單欄、菜單項1.在運行時間添加菜單欄【例2.73】在Word或Excel中添加一個不可移動的菜單欄,
48、并將該菜單欄固定在應用程序 窗口的右邊(替代系統(tǒng)菜單欄)。Sub test()Set Men uBar=Comma ndBars.Add(Name:=mBar,Positi on :=msoBarRight,Me nuBar:=True) With Men uBarP rotectio n=msoBarNoMove.Visible=TrueEnd WithEnd Sub2.在運行時間修改菜單欄表2.5菜單欄的常用屬性和方法屬性或方法說明Add添加一個菜單欄,指定MenuBar參數(shù)為True。En abled設置菜單欄的可用性。Protectio n禁止用戶對菜單欄進仃特疋操作。其值可設置為以下
49、MsoBarProtection常量之一或 組合:msoBarNoChangeDock、msoBarNoChangeVisible、msoBarNoCustomize、msoBarNoHorizontalDock、msoBarNoMove、msoBarNoProtection、msoBarNoResize禾口msoBarNoVerticalDockPositi on指定菜單欄相對于應用程序窗口的位置??蓪⑵湓O置為以下MsoBarPositi on常量之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPop
50、up(用于創(chuàng)建快捷菜單)Visible指定對用戶是顯示還是隱藏控件。如果該控件對用戶是隱藏的,那么該菜 單欄名仍將顯示在有效命令欄列表中。3.對菜單項作運行時間修改表2.6命令欄控件的常用屬性和方法屬性或方法說明Add在命令欄中添加一個菜單項。Type可以是以下常量之一:msoControlButton、msoControlEdit、msoControlDropdown或msoControlComboBox。AddItem在下拉式列表框或組合框的下拉式列表區(qū)中添加一個列表項??蔀橐延辛?表中的新項指定一個索引號,但其數(shù)值不能大于列表中的項目數(shù)。Style指定按鈕外觀是顯示其圖標還是顯示其標題。
51、該值可為以下常量之一:msoButt on Automatic、msoButt onlcon、msoButt on Capti on、第15頁msoButt onlconAn dCapti on、msoButtonlconAndWrapCaption、msoButtonWrapCaption。msoButt onlconAn dCaptio nBelow、msoButt onlconAn dWrapCaptio nBelow或On Actio n指定當用戶改變特定控件的值時要運行的過程。Visible指定控件對用戶是顯示還是隱藏?!纠?.74】在Word或Excel系統(tǒng)活動菜單欄的末尾添加一個
52、名為Custom”的臨時彈出式菜單項,然后在該菜單項中添加一個按鈕控件“Import”。Sub test()Set myM=Comma ndBars.ActiveMe nuBarSet n ewM=myM.C on trols.Add(Type:=msoC on trolPopup,Temporary:=True)n ewM.Captio n=CustomSet Ctrl仁newM.Co ntrols.Add(Type:=msoC on trolButto n,ID:=1)ctrl1.Captio n=ImportEnd Sub三、添加和顯示快捷菜單用Add方法創(chuàng)建快捷菜單時,必須將msoBa
53、rPopUp指定為position參數(shù)的值?!纠?.75】在Word中新建一個快捷菜單,在其中添加兩個菜單項(帶標題),然后用ShowPopup方法顯示該菜單。Sub test()Set capm=Comma ndBars.Add(Name:=Custom,Positi on :=msoBarPopup,Temporary:=True)Set Copy=capm.C on trols.AddWith Copy.Faceld=23.Caption=復制”End WithSet Paste=capm.C on trols.AddWith Paste.FaceId=17.Caption=圖表向?qū)А盓
54、nd Withcapm.ShowPopup 200,200End Sub范例2-9自定義菜單在Excel工作簿中建立一個自定義菜單。工作簿打開時用自定義菜單取代系 統(tǒng)菜單,當選擇“輸入”、“修改”、“刪除”菜單項時顯示出相應的信息,選擇“退 出”菜單項,恢復系統(tǒng)菜單。1打開VBA編輯器。2對“Workbook”的“Open”事件編程:Private Sub Workbook_Ope n()第16頁Men uBars.Add(MyMe nu)建立菜單MenuBars(MyMenu).Menus.AddCaption:=維護(&D)添加水平菜單項MenuBars(MyMenu”).Menu
55、s(”維護).Menultems.Add_Captio n:=輸入(&I), On Actio n:=in_p添加豎直菜單項Men uBars(MyMe nu).Me nus(”維護).Me nultems.Add Captio n:=修改(&C), On Actio n:= modiMenuBars(MyMenu).Menus(維護).MenuItems.Add Caption:=刪除(&D),OnAction:=deleMenuBars(MyMenu).Menus(維護).MenuItems.Add Caption:=退出(&X),OnAction:=qui
56、tMenuBars(MyMenu).Activate激活菜單End Sub3插入一個模塊。在模塊中輸入如下四個過程:Sub in_p()MsgBox(執(zhí)行輸入功能)End SubSub modi()MsgBox(執(zhí)行修改功能)End SubSub dele()MsgBox(執(zhí)行刪除功能)End SubSub quit()MenuBars(MyMenu).Delete刪除自定義菜單End Sub4保存工作簿。2.7代碼優(yōu)化與信息保護一、VBA應用程序的優(yōu)化1.盡量使用系統(tǒng)提供的屬性、方法和函數(shù)【例2.76】求平均工資。方法1:Sub aaa()For k=1 To 1000dyg=a&k
57、c=Range(dyg).ValueTVal=TVal+cNextaval=TVal/1000MsgBox avalEnd Sub方法2:Sub my_aver()a=WorksheetFunction.Average(Sheets(1).Range(A1:A1000)MsgBox a第17頁End Sub2.盡量減少使用對象引用【例2.77】實現(xiàn)同樣功能的兩種方法。方法1:Workbooks(1).Sheets(1).Range(A1:A1000).Font.Name=PayWorkbooks(1).Sheets(1).Range(A1:A1000).Font.FontStyle=Bold方法2:With Workbooks(1).Sheets(1).Range(A1:A1000).Font.Name=Pay.FontStyle=BoldEnd With【例2.78】設置對象變量。Workbooks(1).Sheets(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版居間合同協(xié)議
- 二零二五年度采砂廠承包環(huán)境損害賠償合同范本3篇
- 專業(yè)簡單的離婚協(xié)議書(2024版)
- 二零二五年度社區(qū)治安巡邏安保合作協(xié)議3篇
- 二零二五年度工地安全應急預案編制與保安聘用協(xié)議3篇
- 2025高考數(shù)學二輪復習-專項練-大題規(guī)范練4-專項訓練【含答案】
- 個人貸款居間協(xié)議貸款居間合同協(xié)議書
- 2025年度珠寶首飾原材料采購合同3篇
- 二零二五年度股票質(zhì)押業(yè)務信息披露合同范本3篇
- 專業(yè)粽子經(jīng)銷商合作銷售協(xié)議(2024年度)版B版
- 1離子反應課件2024-2025學年人教版高一化學
- 期末 (試題) -2024-2025學年人教PEP版英語五年級上冊
- 人民軍隊歷史與優(yōu)良傳統(tǒng)(2024)學習通超星期末考試答案章節(jié)答案2024年
- 富血小板血漿(PRP)臨床實踐與病例分享課件
- 新教材邏輯的力量-高二語文選擇性必修上冊部編版課件演講教學
- DB11T 641-2018 住宅工程質(zhì)量保修規(guī)程
- 幼兒園幼兒營養(yǎng)食譜手冊
- 《護理科研》課件
- 屋頂分布式光伏發(fā)電項目 投標方案(技術(shù)方案)
- 2024宏泰集團所屬湖北省征信限公司招聘9人高頻難、易錯點500題模擬試題附帶答案詳解
- 部編版語文四年級下冊第六單元大單元作業(yè)設計
評論
0/150
提交評論