版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、選中單個(gè)單元格Range( “ “).Select例:Range(C9).Select選中“ C9單元格二、選中多個(gè)單元格Range( “:,” ).Select例:Range( “A1:B2 ”).Select選中“ A1”、“ A2、“ B1”、“ B2”四個(gè)連續(xù)的單元格Range( “ 12:12 ”).Select選中第12行Range( “B:B ”).Select選中第B列Range( “A1:A2,B7,2:2 ”).Select選中“ A1”、“ A2、“ B7五個(gè)不連續(xù)的單元格和第二行Cells.Select選中當(dāng)前SHEET中的所有單元格Rows(v行地址 :).Sel
2、ect選中整行Columns(:).Select選中整列例:Rows( “2:2 ”). Select選中第2行Rows( “2:5 ” ). Select選中2到5行Columns(A:A).Select選中A列Columns(E:B).Select選中E到B列三、設(shè)置活動單元格Range().Activate注:設(shè)置活動單元格與選中單元格類似,不同之處就是后者在選中指定的單元格之前會將在此前已被選中的單元格取消掉。前者在設(shè)置之前不會取消已選中的單元格,如果此時(shí)操作的單元格不是被選中的單元格,這時(shí)他實(shí)現(xiàn)的功能與選一個(gè)單元格相同四、給活動的單元格賦值A(chǔ)ctiveCell.FormulaRICI
3、 = 例:Range(A1).SelectActiveCell.FormulaRICI = NameRange(B1).SelectRange(A2:B3).SelectRange(A2).ActivateActiveCell.FormulaRICI = BUGRange(B2).ActivateActiveCell.FormulaR1C1 = 12Range(A3).ActivateActiveCell.FormulaR1C1 = ArcherRange(B3).ActivateActiveCell.FormulaR1C1 = 37五、得到指定單元格中的值Range().Text六、插入單元
4、格Selectio nn sert Shift:=Selection.EntireRown sertSelection.EntireColumn.lnsert例:Selection.Insert Shift:=xlToRight在當(dāng)前選中單元格的位置插入單元格并將當(dāng)前選中的單元格向右移動Selectio nn sert Shift:=xlDown在當(dāng)前選中單元格的位置插入單元格并將當(dāng)前選中的單元格向下移動在當(dāng)前選中單元格的上面插入一行Selection.EntireColumn.lnsert在當(dāng)前選中單元格的左側(cè)插入一列Selection.EntireRown sert七、設(shè)置字體屬性1. 設(shè)
5、置字體名稱和大小Selection.Font.Name = Selection.Font.Size = 例:Selection.Font.Name = 隸書Selection.Font.Size = 152.設(shè)置字體樣式Selection.Font.Italic = 斜體Selection.Font.Underline = 下劃線XIUnderlineStyle(下劃線樣式):xlUnderlineStyleDouble雙下劃線xlUnderlineStyleDoubleAccounting會計(jì)用雙下劃線(如果當(dāng)前單元格中的數(shù)據(jù)是數(shù)字時(shí)則下劃線的寬度是當(dāng)前單元格的寬度)xlUnderlineS
6、tyleNone沒有下劃線xlUnderlineStyleSingle單下劃線xlUnderlineStyleSingleAccounting會計(jì)用單下劃線(如果當(dāng)前單元格中的數(shù)據(jù)是數(shù)字時(shí)則下劃線的寬度是當(dāng)前單元格的寬度)3. 設(shè)置字體的顏色Selection.Font.Colorlndex = Selection.Font.Color = vRGB 值 4. 設(shè)置字體的特殊效果Selection.Font.Strikethrough = 刪除線Selection.Font.Superscript = 上標(biāo)Selection.Font.Subscript = 下標(biāo)八、清空選中單元格里的內(nèi)容Se
7、lection.ClearContents例:Range( “A1:A2,B7,2:2 ” ).Select選中“ A1”、“ A2、“ B7”五個(gè)不連續(xù)的單元格和第二行Selection.ClearContents清空“ A1”、“ A2、“ B7五個(gè)不連續(xù)單元格中的所有內(nèi)容九、設(shè)置選中單元格的邊線屬性XIBorderslndex(邊線):xlEdgeLeft單元格左邊線xlEdgeTop單元格上邊線xlEdgeRight單元格右邊線xIEdgeBottom單元格下邊線xlDiagonalDown單元格左上右下斜線xllnsideVertical多個(gè)單元格內(nèi)垂直線xllnsideHorizo
8、ntal多個(gè)單元格內(nèi)水平線1.設(shè)置邊線的類型Selection.Borders().LineStyle = XILineStyle(邊線類型):xILineStyleNone無樣式xlContinuous單線xlDash破折號線(間隔線)xlDashDot破折號點(diǎn)線xlDashDotDot破折號點(diǎn)點(diǎn)線xlDot 點(diǎn)線xlDouble雙橫線xISIantDashDot斜點(diǎn)線2. 設(shè)置邊線的寬度SeIection.Borders().Weight = XIBorderWeight(寬度值):xlHairline極細(xì)xlThin細(xì)xlMedium 中等xlThick粗3. 設(shè)置邊線的顏色Select
9、ion.Borders(xlEdgeLeft).Colorlndex = Selection.Borders(xlEdgeLeft).Color = 十、刪除選中的單元格Selection.Delete Selection.EntireRow.Delete例:Selection.Delete Shift:=xlToLeft刪除選中的單元格,并將已刪除單元格所在位置右面的單元格向左移動Selection.Delete Shift:=xlUp刪除選中的單元格,并將已刪除單元格所在位置下面的單元格向上移動Selection.EntireRow.Delete刪除選中單元格所在的行Selection.E
10、ntireColumn.Delete刪除選中單元格所在的列十一、設(shè)置單元格背景色及圖案1.背景色Selectio nn terior.Colorlndex = 0到56之間的數(shù)字Selection.lnterior.Color = RGB2.圖案樣式Selectio nn terior.Pattern = Constants(圖案樣式)Constants(圖案樣式):xlSolid實(shí)心xlGray7575%灰色xlGray5050%灰色xlGray2525%灰色xlGray16 12.5% 灰色xlGray86.25%灰色xlHorizontal水平條紋xlVertical垂直條紋xlDown
11、逆對角線條紋xlUp 對角線條紋xlChecker 對角線剖面線 xlSemiGray75 粗對角線剖面線 xILightHorizontal細(xì)水平條紋xILightVertical細(xì)垂直條紋xlLightDown細(xì)逆對角線條紋xIGrid 細(xì)水平剖面線xlCrissCross 細(xì)對角線剖面線3.圖案顏色Selection.lnterior.PatternColorlndex = Selection.lnterior.PatternColor = 十二、返回工作表中的行數(shù)Sheet1.UsedRange.Rows.Count返回從最小已輸入內(nèi)容的行號到最大已輸入內(nèi)容的行號之間的行數(shù)Sheet1
12、.UsedRange.Rows(Sheet1.UsedRange.Rows.Count).Row最大已輸入內(nèi)容的行號十三、得到當(dāng)前EXCEL的文件名ThisWorkbook.Path文件路徑ThisWorkbook.Name文件名ThisWorkbook.FullName全路徑十四、批注的操作1. 添加批注AddComment(Content)例:Range(A1).AddComment (Writes the content in here!)2. 修改批注內(nèi)容Comment.Text例:Range(B1).Comment.Text Text:= Writes the content in
13、here!3. 顯示/隱藏批注Comment.Visible = 4. 刪除批注ClearComments例:Selection.Range(B1).CIearComments5. 選中批注Comment.Shape.Select True6.改變批注大小和位置每次增加5%勺寬度每次減少6%勺寬度Selection.ShapeRange.ScaleWidth ,msoFalse, Selection.ShapeRange.ScaleHeight ,msoFalse, 例: Selection.ShapeRange.ScaleWidth 1.5, msoFalse, msoScaleFromTo
14、pLeft Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.Left = Selection.ShapeRange.Top = Selection.ShapeRange.Width = Selection.ShapeRange.Height = 十五、剪切、復(fù)制、粘貼Selection.Cut剪切Selection.Copy復(fù)制ActiveSheet.Paste粘貼例:Range(A1).SelectSelection.CutRange(A2).SelectActi
15、veSheet.PasteSelection.CopyRange(A3).SelectActiveSheet.Paste十六、選擇性粘貼Selection.PasteSpecial 十七、改變列寬Selection.ColumnWidth = 指定列寬例:Columns(A:A).Select例:Columns(C:C).EntireColumn.AutoFit根據(jù)C列的內(nèi)容自動改變列的寬度對于什么是宏有許多種解釋,總的來說宏是使任務(wù)自動化包括在 Sub和End Sub之間的一組指令的集合,Excel97的宏就是貯存在Visual Basic模塊中的VBA程序。只有充分使用宏,才能深入理解 E
16、xcel97數(shù)據(jù)管理各個(gè)方面的精妙之處。在 Excel97應(yīng)用中怎樣使用宏呢?根據(jù) 平常實(shí)際應(yīng)用經(jīng)驗(yàn),我從以下三個(gè)方面談一點(diǎn)心得。一、建立宏直接建立宏有兩種途徑:使用Excel97提供的宏記錄器建立宏運(yùn)用宏記錄器記錄宏基本可分為三個(gè)步驟,第一步:啟動宏記錄器。從Excel97工具菜單中選取“宏”,然后選中“錄制新宏”選項(xiàng),從彈出的“錄制新宏”窗口中,用戶可以為即將錄制的宏定義一個(gè)便于識別的名字和快捷鍵,并確定宏的保存地址,其中宏名為必選項(xiàng),若 用戶未定義宏名,宏記錄器將自動為所錄制的宏定義一個(gè)默認(rèn)的名字,快捷鍵和保存地址由用戶根據(jù)需要自由設(shè)定,宏記錄器默認(rèn)用戶所錄 制的宏保存在當(dāng)前工作簿。第二
17、步:執(zhí)行希望錄制的動作。這是使用宏記錄器建立宏的關(guān)鍵,因?yàn)樵谶@個(gè)步驟中,用戶每一個(gè)完成的動作都 將被宏記錄器所錄制,所以,為了使宏達(dá)到簡捷、實(shí)用的目的,用戶的動作一定要精煉、準(zhǔn)確,盡可能地用最少的動作完成預(yù)定的任務(wù)。第 三步:停止記錄。Excel97的宏記錄器具有一定的智能判斷能力,只記錄已完成的動作,不會記錄用戶選擇錯(cuò)誤或修改錯(cuò)誤的過程。例如,它不會記錄 打開對話框的菜單命令,直到單擊了對話框上的“確定”為止,若用戶打開對話框后選擇了“取消”,宏記錄器則不會錄制該動作。在錄制 宏的過程中,用戶不能離開Excel97的工作環(huán)境,否則,用戶的動作將不能被記錄。舉一個(gè)簡單的例子:在 Excel97
18、中打開一個(gè)名為“通訊錄.dbf ”的數(shù)據(jù)庫文件,運(yùn)用宏記錄器建立一個(gè)名為“打開數(shù)據(jù)庫”的宏,具 體操作為:1. 進(jìn)入Excel97,新建一個(gè)工作簿;2. 將工作簿命名為“打印通訊錄”(若準(zhǔn)備在工作簿中使用宏應(yīng)養(yǎng)成為新建工作簿命名的操作習(xí)慣);3. 啟動宏記錄器,并定義宏名為“打開數(shù)據(jù)庫”;4. 運(yùn)用Excel97的打開文件向?qū)Т蜷_數(shù)據(jù)庫文件“通訊錄.dbf ”;5. 在工具菜單的“宏”選項(xiàng)下選擇“停止記錄”,或單擊“停止錄制”按鈕。通過上面的操作并稍加調(diào)整得到的宏代碼為:Sub打開數(shù)據(jù)庫()Workbooks.Open FileName:= 通訊錄.dbfEnd Sub在文件名前可以包含詳細(xì)路
19、徑,這是由打開文件時(shí)選擇路徑的動作所決定的。使用Visual Basic 編輯器建立宏Excel97的Visual Basic編輯器的功能十分強(qiáng)大,它不僅可以建立宏,還可以建立用戶自定義函數(shù)、用戶自定義窗體和過程。從工具 菜單的“宏”選項(xiàng)下選擇“ Visual Basic編輯器”即可進(jìn)入編輯窗口,在通過編輯器建立宏的過程中,可以使用拷貝、復(fù)制、粘貼、刪除、插入、查找、替換、縮進(jìn)、凸出等所有的文本編輯功能,同時(shí)編輯器還提供了自動語法檢測和提示功能,所以,即使從未涉及宏語言VisualBasic for Application的用戶,也能夠在很短的時(shí)間內(nèi)掌握并熟練使用Visual Basic 編輯
20、器。使用Visual Basic編輯器建立宏基本也可以分為三個(gè)步驟,即插入模塊、編寫宏代碼、關(guān)閉編輯器并返回Excel97。例如,要將打開的數(shù)據(jù)庫文件“通訊錄.dbf ”中的記錄運(yùn)用表格的方式打印出來,建立一個(gè)名為“打印通訊錄”的宏,可以分為以下步驟:1. 根據(jù)數(shù)據(jù)庫的字段建立打印頁面。在本例中數(shù)據(jù)庫文件“通訊錄.dbf ”有六個(gè)字段:序號、聯(lián)系人、聯(lián)系地址、聯(lián)系電話、郵政編碼、備注,其中序號是第一個(gè)字段,也是數(shù)據(jù)庫記錄的唯一標(biāo)識,數(shù)據(jù)庫記錄按序號值進(jìn)行升序排列,文件打開后,序號值存放在Excel97工作表的第A列中。2. 將打印頁面工作表命名為“通訊錄打印頁面”,并根據(jù)頁面大小確定每頁打印的
21、記錄數(shù)量(在此設(shè)為30)。3. 分析宏運(yùn)行過程中應(yīng)注意的要點(diǎn)。在此例中首先應(yīng)判斷數(shù)據(jù)記錄的個(gè)數(shù),以確定需要打印的頁數(shù);其次,在打印之前應(yīng)選擇對應(yīng)的 數(shù)據(jù)填入打印頁面;第三,在連續(xù)打印的過程中程序應(yīng)給予適當(dāng)?shù)奶崾?,允許用戶整理打印機(jī)或中途退出打印過程。4. 進(jìn)入Visual Basic編輯器,插入模塊,編寫宏代碼。在編寫宏代碼的過程中可以在代碼中加注,以增加宏代碼的可讀性。根據(jù)以上 分析,完成通訊錄打印過程的宏代碼如下:Sub打印通訊錄()Dim Value, no1, no2,頁數(shù) As IntegerDim sss, sss1, sss2, sss3 As StringDim qqq As
22、RangeWindows( 通訊錄 .dbf).Activate計(jì)算A列中值大于0的單元格個(gè)數(shù),即記錄個(gè)數(shù)no1 = 2 在 通訊錄 .dbf 中第一行為字段標(biāo)題,計(jì)數(shù)從第二行開始Do While no1 0 sss = a & no1 Value = Range(sss) If Value 0 Then no1 = no1 + 1 Else Exit Do End IfLoopsss = Str(no1 - 2)no1的初始值為2,故no1-2為數(shù)據(jù)庫的記錄數(shù) 記錄數(shù)除以每頁的記錄容量即頁數(shù)If (no1 - 2) / 30 = Int(no1 - 2) / 30) Then頁數(shù) = (no
23、1 - 2) / 30Else頁數(shù) = Int(no1 - 2) / 30) + 1End Ifsss1 = Str( 頁數(shù) )no2 = 1Do While no2 0Windows( 通訊錄 .dbf).Activate 由于數(shù)據(jù)庫有 6 個(gè)字段,故第 1 列至第 6 列為數(shù)據(jù)區(qū)域Set qqq = Range(Cells(no2 - 1) * 30 + 2, 1), Cells(no2 * 30 + 1, 6)qqq.CopyWindows( 打印通訊錄 .xls).ActivateSheets( 通訊錄打印頁面 ).SelectRange(A4).Select 選定打印頁面數(shù)據(jù)區(qū)域的左
24、上角 將相應(yīng)數(shù)據(jù)選擇性粘貼到打印頁面中Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=Falsesss2 = Str(no2)sss3 = 數(shù)據(jù)庫中共有 + sss + 條記錄,共 + sss1 + 頁,目前表中為第 + sss2 + 頁數(shù)據(jù),打印嗎? www = MsgBox(sss3, 68, 提示 ) 當(dāng)從提示框中選擇“否”時(shí)用戶可中途退出打印過程If www = vbNo Then Exit DoElseActiveWindow.SelectedShe
25、ets.PrintOut From:=1, To:=1, _ Copies:=1, Collate:=TrueEnd Ifno2 = no2 + 1Loop程序執(zhí)行結(jié)果如圖所示。實(shí)際上任何文本編輯軟件都可以編寫宏代碼,只是必須將所編寫的宏代碼粘貼到Excel97的宏模塊中才能運(yùn)行。以上兩種建立宏的方法各有優(yōu)劣,使用宏記錄器建立宏簡單、方便,所見即所得,可以省略輸入宏代碼的過程,基本不用了解宏語言 的語法和結(jié)構(gòu),但不夠靈活,不夠簡捷,所以,運(yùn)用范圍受到限制;使用編輯器建立宏則對用戶層次要求較高,要求用戶能夠熟練使用宏語 言Visual Basic for Application,運(yùn)用這種方法建立
26、宏不僅可以處理復(fù)雜的運(yùn)算過程,同時(shí)可以極大地發(fā)揮Excel97的各項(xiàng)功能。因此,在實(shí)際應(yīng)用中,應(yīng)將兩種方式結(jié)合運(yùn)用,發(fā)揮其各自的長處,才能做到事半功倍。二、優(yōu)化宏宏建立以后需要經(jīng)過調(diào)試和優(yōu)化方可運(yùn)用。宏的調(diào)試主要是找岀語法上的缺陷,在建立宏的同時(shí)可以一并完成,而優(yōu)化則需要相當(dāng)長的過程,甚至在程序已經(jīng)投入使用后還需要不斷優(yōu)化。宏的優(yōu)化大致可從以下幾個(gè)方面著手:消除冗余,提高宏代碼的運(yùn)行效率。消除冗余是所有程序開發(fā)人員應(yīng)該遵循的一般準(zhǔn)則。針對Excel97應(yīng)用而言,建立宏應(yīng)充分運(yùn)用Excel97本身強(qiáng)大的數(shù)據(jù)處理功能,將某些數(shù)據(jù)計(jì)算的工作交給工作表或單元格去完成,這樣可以在很大程度上減少宏代碼的數(shù)
27、量,縮短程序的開發(fā)周期。另外,在處理相同任 務(wù)的時(shí)候,Excel97本身的公式或函數(shù)的計(jì)算速度也遠(yuǎn)遠(yuǎn)高于宏代碼的執(zhí)行速度,這一點(diǎn)在用戶所開發(fā)的程序很大或計(jì)算機(jī)的運(yùn)算速度較低 時(shí)尤為明顯。最大限度地提高宏代碼的執(zhí)行速度。Excel97本身沒有提高宏代碼執(zhí)行速度的命令,根據(jù)筆者的實(shí)踐體會,要提高宏代碼的執(zhí)行速度大致可從三個(gè)方面考慮:1. 消除屏幕閃爍現(xiàn)象。在宏的執(zhí)行過程中,特別是宏在不同工作簿或工作表之間反復(fù)調(diào)用數(shù)據(jù)的時(shí)候,會岀現(xiàn)屏幕閃爍的現(xiàn)象。如上例“打印通訊錄”宏在 “通訊錄.dbf ”和“打印通訊錄.xls ”之間來回切換,屏幕的閃爍大大影響了宏代碼的執(zhí)行速度。在編寫宏代碼的時(shí)候,加入關(guān)閉屏
28、幕更新 命令,可以有效地防止屏幕閃爍。例如我們可將“打印通訊錄”宏作如下修改:Sub打印通訊錄()Application.ScreenUpdating = FalseApplication.ScreenUpdating = TrueEnd Sub這樣將看不到宏的執(zhí)行過程,但宏的執(zhí)行速度加快了。值得注意的是:Excel97對屏幕更新的默認(rèn)值是 True,所以在宏執(zhí)行結(jié)束時(shí)需要恢復(fù)屏幕更新的默認(rèn)設(shè)置。另外,在同一工作表中的不同區(qū)域進(jìn)行數(shù)據(jù)處理時(shí)也會岀現(xiàn)屏幕閃爍現(xiàn)象,這時(shí)只需從窗口菜單中選擇“凍結(jié)拆分窗口”,通 過調(diào)整行高和列寬將拆分窗口大小調(diào)整為計(jì)算機(jī)屏幕大小后,在執(zhí)行宏的過程中即可消除屏幕閃爍現(xiàn)
29、象。2. 盡量少占用計(jì)算機(jī)內(nèi)存。首先,在程序中應(yīng)少使用剪貼板,因?yàn)樵诩糍N板上放置數(shù)據(jù)會大量占用計(jì)算機(jī)的內(nèi)存,從而降低機(jī)器的性能,影響代碼的執(zhí)行速度。第二,在編寫宏代碼時(shí)應(yīng)養(yǎng)成事先聲明變量的習(xí)慣。因?yàn)?,在程序中使用變量而不事先聲明,Excel97會默認(rèn)變量類型為 Variant ,Variant是一種特殊的數(shù)據(jù)類型,除了定長String數(shù)據(jù)及用戶定義類型外,可以包含任何種類的數(shù)據(jù),但是它所占用的內(nèi)存空間也遠(yuǎn)遠(yuǎn)高于其他數(shù)據(jù)類型。如在“打印通訊錄”宏中聲明變量的語句為:Dim Value, no1, no2, 頁數(shù) As IntegerDim sss, sss1, sss2, sss3 As Str
30、ing以上兩個(gè)語句共聲明八個(gè)變量,較之不聲明變量節(jié)省內(nèi)存空間104個(gè)字節(jié),在程序較小、使用變量較少時(shí),這種方法對執(zhí)行速度的影響并不明顯,但若程序很大、使用變量很多、計(jì)算機(jī)的運(yùn)算速度較低時(shí),使用這種方法對提高程序的執(zhí)行速度則是非常有效的。第三,在程序中要謹(jǐn)慎運(yùn)用數(shù)組。為了盡可能使代碼簡潔明了,應(yīng)將聲明的數(shù)組指定為某一種數(shù)據(jù)類型。數(shù)組變量的最大值, 是以操作系統(tǒng)與有多少可用內(nèi)存為基礎(chǔ)的,若使用的數(shù)組大小超過了系統(tǒng)中可用內(nèi)存總數(shù),則必須從磁盤中來回讀寫數(shù)據(jù),從而使宏的運(yùn)行 速度變得很慢。第四,對使用Load語句調(diào)入內(nèi)存的 VBA對象,當(dāng)確定在后面的程序中已不再使用時(shí),應(yīng)及時(shí)使用Unload語句將這個(gè)
31、對象從內(nèi)存中刪除,以釋放內(nèi)存空間。3. 簡化VBA語句的結(jié)構(gòu)。由于任何一個(gè)屬性、方法或?qū)哟螌ο蟮囊枚夹枰狤xcel97花費(fèi)一定的時(shí)間來處理,因此在對屬性、方法或?qū)哟螌ο蟮囊靡η蠛喕?。例如可以將“打開數(shù)據(jù)庫”宏的語句改寫為:Application.Workbooks.Open FileName:= 通訊錄.dbf雖然這種寫法同樣可以運(yùn)行,但與原來寫法比較增加了VBA對象的引用層次,從而增加了程序的處理時(shí)間,從理論上來說降低了程序的執(zhí)行速度。將宏的執(zhí)行動作模塊化。VBA面向?qū)ο缶幊痰奶攸c(diǎn)使宏的模塊化變得尤為方便。所謂模塊化就是將宏分解為若干互相獨(dú)立的宏子程序,每個(gè)子程序只包含一個(gè)或幾個(gè)完整的
32、執(zhí)行動作。由于Excel97的宏可以互相嵌套,在一個(gè)宏中調(diào)用其他的宏子程序只需在宏中嵌入宏子程序的名字即可,因此,可以將一些較小的宏連在一起創(chuàng)建一個(gè)較大的宏,以完成相對復(fù)雜的任務(wù)。在宏的嵌套中必須注意:一定要明確指定各個(gè)宏子程序的作用范圍,即必須說明宏子程序作用的工作簿的工作表或工作表中的數(shù)據(jù)區(qū)域,否則將會岀現(xiàn)數(shù)據(jù)紊亂導(dǎo)致臆想不到的后果。將宏的執(zhí)行動作模塊化具有很多優(yōu)點(diǎn),第一,便于宏代碼的編寫、調(diào)試、修改和維護(hù);第二,程序完成后并不是一成不變的,要求隨著業(yè)務(wù)的變化而不斷的完善和升級。模塊化增加了程序代碼的可讀性,便于應(yīng)用程序的完善和升級。第三,完成性質(zhì)相同任務(wù)的宏可以作為 公共子程序被反復(fù)多次
33、調(diào)用,從而降低冗余。另外,有經(jīng)驗(yàn)的程序開發(fā)人員往往積累一些帶有共性的小工具,在開發(fā)新的應(yīng)用程序時(shí)可以直 接使用,進(jìn)行拼裝,既省時(shí)又省力,可提高程序的開發(fā)效率。例如可以將“打印通訊錄”宏中的打印過程獨(dú)立岀來,變成如下的宏子程序:Sub打?。ǎ〢ctiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=TrueEnd Sub宏子程序“打印”執(zhí)行的動作是打印工作表的第一頁,可以在任何執(zhí)行相同動作的打印宏中予以調(diào)用。三、運(yùn)行宏建立宏和優(yōu)化宏兩個(gè)步驟都是為運(yùn)行宏所做的準(zhǔn)備工作,使用宏的最終目的是要通過運(yùn)行宏來實(shí)現(xiàn)的。運(yùn)
34、行宏的方式一般分為以下四種:使用宏對話框運(yùn)行宏使用宏對話框運(yùn)行宏可分為三個(gè)步驟:1. 從工具菜單的宏選項(xiàng)中選擇“宏”彈出如圖所示的宏對話框;2. 從宏名列表中選擇需要運(yùn)行的宏;3. 用鼠標(biāo)左鍵單擊“執(zhí)行”按鈕。這是運(yùn)行宏最普通的方式,具有簡單、直觀、易于掌握的優(yōu)點(diǎn)。通過自定義的快捷鍵運(yùn)行宏“選宏的快捷鍵可以通過兩種方式定義,一是在運(yùn)用宏記錄器建立宏時(shí)從錄制宏對話框中定義;二是從上圖所示宏對話中選擇項(xiàng)”后定義??旖萱I定義后,運(yùn)行宏的時(shí)候需要同時(shí)按下Ctrl和所定義的快捷鍵。這是運(yùn)行宏最直接的方式。通過載體運(yùn)行宏所謂載體就是能夠被指定宏的 Excel97對象。一般而言,可以充當(dāng)載體的對象有:工作簿
35、、工作表、工具欄按鈕、圖表、圖片、文本 框、藝術(shù)字以及各項(xiàng)窗體控件。1. 運(yùn)用工作簿和工作表作為宏的載體。工作簿和工作表作為宏的載體時(shí),并不能直接為其指定宏,需要通過事件的觸發(fā)來運(yùn)行宏。在此僅以工作表為例,如將宏“打印通訊 錄”指定給工作表“通訊錄打印頁面”,可以通過激活工作表事件來實(shí)現(xiàn)。代碼如下:Private Sub Worksheet_Activate()打印通訊錄End Sub要運(yùn)行“打印通訊錄”宏只需激活工作表“通訊錄打印頁面”即可。這樣的工作表事件共有七個(gè),除了以上激活工作表事件外,還有:BeforeDoubleClick 事件(雙擊工作表產(chǎn)生的事件);BeforeRightCli
36、ck 事件(鼠標(biāo)右鍵單擊工作表時(shí)產(chǎn)生的事件);Deactivate 事件(工作表從活動狀態(tài)轉(zhuǎn)為非活動狀態(tài)時(shí)產(chǎn)生的事件);Calculate 事件(當(dāng)數(shù)據(jù)源更新,圖表重新繪制之后產(chǎn)生的事件);Change事件(當(dāng)更改工作表中的單元格或外部鏈接引起單元格的值改變時(shí)產(chǎn)生的事件);SelectionChange 事件(工作表上的選定區(qū)域發(fā)生改變時(shí)產(chǎn)生的事件)。每個(gè)事件都有其特定的觸發(fā)條件,這樣就為宏的靈活運(yùn)用提供了多種有效途徑。2. 運(yùn)用自定義工具欄按鈕作為宏的載體。運(yùn)用自定義工具欄按鈕作為宏的載體,可通過以下步驟來實(shí)現(xiàn): 將鼠標(biāo)指針指向任何顯示的工具欄,單擊右鍵,在岀現(xiàn)的快捷菜單中選擇“自定義”選項(xiàng)
37、,彈岀自定義窗口; 從自定義窗口中選擇“命令”頁面; 在命令頁面的“類別”列表中選擇“宏”,將“命令”列表中岀現(xiàn)的自定義按鈕拖曳到工具欄上; 用鼠標(biāo)右鍵單擊工具欄上的自定義按鈕,從彈岀的“指定宏”窗口列表中選擇宏,最后單擊“確定”按鈕。 若要運(yùn)行該宏單擊工具欄上的自定義按鈕即可。3. 運(yùn)用圖表、圖片、文本框、藝術(shù)字等繪圖對象作為宏的載體。建立繪圖對象有兩種方法,一是從 Excel97插入菜單中插入圖表、圖片或藝術(shù)字,二是從視圖菜單中打開繪圖、圖表、圖片或 藝術(shù)字工具欄,然后通過工具欄建立繪圖對象。將宏指定給繪圖對象的操作過程如下: 選中的繪圖對象; 用鼠標(biāo)右鍵單擊選中的繪圖對象,從快捷菜單中選
38、擇“指定宏”選項(xiàng); 從彈出的“指定宏”窗口列表中選擇宏后單擊“確定”按鈕。從此,每當(dāng)鼠標(biāo)左鍵單擊該對象時(shí)都會運(yùn)行指定的宏。4. 運(yùn)用窗體控件作為宏的載體。靈活地運(yùn)用窗體控件是建立應(yīng)用程序主控菜單的基礎(chǔ)。運(yùn)用窗體控件作為宏的載體可通過兩種途徑: 從視圖菜單中打開窗體工具欄,將可以使用的窗體控件拖曳到Excel97工作表上,然后重復(fù)為繪圖對象指定宏的操作過程,通過上述操作,作為宏的載體的窗體控件將“浮”在Excel97工作表上,用鼠標(biāo)單擊該控件即可運(yùn)行指定的宏。 通過Visual Basic 編輯器建立自定義窗體,將自定義窗體控件作為宏的載體。通訊錄處理程序打開數(shù)據(jù)庫二前,因沒有將要打印的數(shù)據(jù)故打
39、 印通訊錄按鈕不掘應(yīng)用;數(shù)據(jù)庫打開涪打開數(shù)據(jù)庫 按齟將失去焦.點(diǎn),避免重復(fù)打開數(shù)據(jù)庫UI-IU-itI打開數(shù)據(jù)庫I 訂印11訊錄退出 imBiairBiBiniBiviMiBiniBiBmiBiriifiI例如:建立如圖所示名為“通訊錄處理程序”的自定義窗體,然后通過“打開數(shù)據(jù)庫”和“打印通訊錄”按鈕分別運(yùn)行“打開數(shù) 據(jù)庫”和“打印通訊錄”兩個(gè)宏,具體操作步驟為:第一步,進(jìn)入 Visual Basic編輯器;第二步,通過Visual Basic編輯器的插入菜單添加用戶窗體;第三步,設(shè)置窗體屬性,在本例中將窗體的Cption屬性和(名稱)屬性都設(shè)置為“通訊錄處理程序”;第四步,為窗體添加控件,同
40、時(shí)設(shè)置控件屬性,窗體控件的屬性很多,Excel97為每個(gè)控件屬性都定義了一個(gè)默認(rèn)值,因此,用戶不必對每一個(gè)屬性都重新設(shè)置,只需設(shè)置用戶認(rèn)為需要更改的屬性即可;第五步,通過控件的 Click事件指定宏,如將宏“打印通訊錄”指定給控件“打印通訊錄”的代碼如下:Private Sub打印通訊錄 _Click()End Sub注意:在用戶自定窗體的類模塊中不能直接調(diào)用Excel97宏,必須使用Run方法,在使用Run方法調(diào)用宏的過程中,宏名應(yīng)包括在括號和引號內(nèi)。Excel97所提供的通過載體運(yùn)行宏的特性,使用戶在開發(fā)管理程序的時(shí)候更加得心應(yīng)手。自動運(yùn)行的宏在 Excel5 中有四個(gè)自動執(zhí)行的宏:Aut
41、o_Open、Auto_Close、Auto_Activate 和 Auto_Deactivate , Excel97 為了保持向后的兼容性對這四個(gè)宏予以了保留。在本文所列舉的通訊錄處理程序中,有一個(gè)Auto_Open宏的應(yīng)用例子:Sub auto_open()通訊錄處理程序.ShowEnd Sub通過此宏的應(yīng)用,打開文件“打印通訊錄.xls ”將同時(shí)激活“通訊錄處理程序”窗體,使Excel97的應(yīng)用更加自動化。這只是運(yùn)用Auto_Open 宏的一個(gè)最簡單的例子,實(shí)際上,Auto_Open宏在設(shè)置密碼、初始化工作簿以及定義Excel97工作環(huán)境等方面都能發(fā)揮極大的作用。至此,一個(gè)較為完整的通訊
42、錄處理程序編制完畢。在實(shí)際工作中,用戶所處理的業(yè)務(wù)會遠(yuǎn)遠(yuǎn)復(fù)雜于本文所列舉的例子,但具體操作過 程大致不會超出上面所述范疇。需要說明的是:雖然 Excel97保留了這四個(gè)宏,但是Excel97新增加的自動響應(yīng)事件的功能卻要強(qiáng)大得多。Excel97常用的自動響應(yīng)事件有46個(gè),以上四個(gè)宏分別被 Open事件、WorkbookBeforeClose 事件、Activate 事件和Deactivate 事件所代替。Open事件是打開工作簿時(shí)自動響應(yīng)的事件。WorkbookBeforeClose 事件是當(dāng)任一打開的工作簿要關(guān)閉時(shí)立即產(chǎn)生的事件。Activate 事件是激活一個(gè)工作簿、工作表、圖表或嵌入式圖
43、表時(shí)自動響應(yīng)的事件。Deactivate 事件是圖表、工作表或工作簿從活動狀態(tài)轉(zhuǎn)為非活動狀態(tài)時(shí)自動響應(yīng)的事件。用戶掌握和熟練使用 Excel97事件,能在Excel97的應(yīng)用方面達(dá)到一個(gè)新的境界。讀書人推崇開卷有益,在Excel97的應(yīng)用中同樣包含“溫故而知新”的哲理,博大精深的Excel97,為我們提供了許許多多神奇的功能,需要我們在日常應(yīng)用中去不斷地探索和挖掘。第三步,設(shè)置窗體屬性,在本例中將窗體的Cption屬性和(名稱)屬性都設(shè)置為“通訊錄處理程序”;第四步,為窗體添加控件,同時(shí)設(shè)置控件屬性,窗體控件的屬性很多,Excel97為每個(gè)控件屬性都定義了一個(gè)默認(rèn)值,因此,用戶不必對每一個(gè)屬性
44、都重新設(shè)置,只需設(shè)置用戶認(rèn)為需要更改的屬性即可;第五步,通過控件的 Click事件指定宏,如將宏“打印通訊錄”指定給控件“打印通訊錄”的代碼如下:Private Sub打印通訊錄 _Click()Run (打印通訊錄)End Sub注意:在用戶自定窗體的類模塊中不能直接調(diào)用Excel97宏,必須使用Run方法,在使用Run方法調(diào)用宏的過程中,宏名應(yīng)包括在括號和引號內(nèi)。Excel97所提供的通過載體運(yùn)行宏的特性,使用戶在開發(fā)管理程序的時(shí)候更加得心應(yīng)手。自動運(yùn)行的宏在 Excel5 中有四個(gè)自動執(zhí)行的宏:Auto_Open、Auto_Close、Auto_Activate 和 Auto_Deact
45、ivate , Excel97 為了保持向后的兼容性對這四個(gè)宏予以了保留。在本文所列舉的通訊錄處理程序中,有一個(gè)Auto_Open宏的應(yīng)用例子:Sub auto_open()通訊錄處理程序.ShowEnd Sub通過此宏的應(yīng)用,打開文件“打印通訊錄.xls ”將同時(shí)激活“通訊錄處理程序”窗體,使Excel97的應(yīng)用更加自動化。這只是運(yùn)用Auto_Open 宏的一個(gè)最簡單的例子,實(shí)際上,Auto_Open宏在設(shè)置密碼、初始化工作簿以及定義Excel97工作環(huán)境等方面都能發(fā)揮極大的作用。至此,一個(gè)較為完整的通訊錄處理程序編制完畢。在實(shí)際工作中,用戶所處理的業(yè)務(wù)會遠(yuǎn)遠(yuǎn)復(fù)雜于本文所列舉的例子,但具體操
46、作過 程大致不會超出上面所述范疇。需要說明的是:在 Excel 里通過使用宏我們可以實(shí)現(xiàn)許多普通方法無法實(shí)現(xiàn)的功能!一個(gè)簡單的例子就足以說明這一點(diǎn) :在 Excel 里的 sheet1 的 SelectionChange 事件里寫入如下代碼:MsgBox Selection.Cells.Count那么在你點(diǎn)選單元格的時(shí)候, excel 會彈出提示框告訴你所選取的單元格的數(shù)目。整個(gè)過程的完整代碼為: Private Sub Worksheet_SelectionChange(ByVal Target As Range)MsgBox Selection.Cells.CountEnd Sub是不是很
47、奇妙!在 Excel 里編寫宏的語言是 vba 語言( visual basic for application) ,學(xué)好它對你更好的使用 Excel 絕對大有裨益! 很多初學(xué)者都在這方面開始努力,但是在自己獨(dú)立編寫宏的時(shí)候也常常碰到一些問題。而且這些問題在 excel 的幫助文件里很難找到答案。 我在這里列舉幾個(gè)出現(xiàn)頻率較高的問題與大家一起分析,希望能帶給大家一些啟發(fā)。1、如何隱藏宏的執(zhí)行過程一個(gè)宏編寫完后, 執(zhí)行的過程就是一行一行運(yùn)行代碼的過程, 這時(shí)屏幕會反映每一個(gè)步驟所產(chǎn)生的變化。 這樣不僅看上去不美觀而且 會暴露編程思路。更重要的是這樣也會降低系統(tǒng)的執(zhí)行速度!所以,我們應(yīng)該屏蔽掉這個(gè)
48、過程。方法:在你寫的宏代碼的第一行前加上一句: Applicatiion.screenupdate=False 。然后在你的代碼的最后加上: Applicatiion.screenupdate=True 。這樣就可以達(dá)到你屏蔽程序執(zhí)行過 程的目的了。2、如何在宏代碼里使用工作表函數(shù)在 Excel 里有很多函數(shù)使用起來很方便,譬如 ;sum;average;min;max. 但是工作表函數(shù) 是不能在宏代碼里直接使用的。它們和 vba 語言中的函數(shù)是不一樣的。 Vba 中的函數(shù)例如 val,mid 在工作表里也不能通用。所以我在這里講 解一下在vba語言里調(diào)用工作表函數(shù)的方法。讓一個(gè)變量得到單元格
49、A1到B5的總和(變量設(shè)為 X) X=SUM(RANGE(A1:B5)的寫法明顯是行不通的;正確寫法是 X=APPLICATI0N.W0RKSHEETFUNCTI0N.SUM(RANGE(A1:B5也就是說必須通過 Application 對象的 Worksheetfunction 屬性來間接調(diào)用工作表函數(shù)!3、單元格區(qū)域與數(shù)組 我們有時(shí)會需要將一個(gè)區(qū)域的值賦予一個(gè)數(shù)組或者正好相反是要將一個(gè)數(shù)組得值填充到一個(gè)區(qū)域,例如我們要將區(qū)域A2到D4的所有單元格中的結(jié)果存入一個(gè)數(shù)組:首先,我們應(yīng)該定義一個(gè)數(shù)組變量DATA因?yàn)镋XCELX作表示二維的,故而使用二維的數(shù)組變量也比較合適!由于A2:D4這個(gè)區(qū)
50、域有3行,4列所以:DIM DATA(1TO 3,1 TO 4)FOR A=1 TO 3FOR B=1 TO 4 DATA(A,B)=RANGE(A2:D4).CELLS(A,B).VALUE NEXT BNEXT A這樣DATA變量就擁有了該區(qū)域的所有單元格結(jié)果,通過MSGB0XATA(1,1)類似的方法里可以一個(gè)個(gè)的驗(yàn)證。之后如果你要將該變量的結(jié)果賦予一個(gè)區(qū)域例如:A6:D8;可以用如下代碼:RANGE(A6:D8).VALUE=DATA的例子就足以說明這一點(diǎn):在 Excel 里的 sheet1 的 SelectionChange 事件里寫入如下代碼:MsgBox Selection.Cells.Count那么在你點(diǎn)選單元格的時(shí)候, excel 會彈出提示框告訴你所選取的單元格的數(shù)目。整個(gè)過程的完整代碼為:Private Sub Worksheet_SelectionChange(ByVal Target As Range)MsgBox Selection.Cells.CountEnd Sub是不是很奇妙!在 Excel 里編寫宏的語言是 vba 語言( visual basic for application) ,學(xué)好它對你更好的使用 Excel 絕對大有裨益! 很多初學(xué)者都在這方面開始努力,但是在自己獨(dú)立編寫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年會先進(jìn)員工頒獎(jiǎng)
- 腦卒中護(hù)理查房
- 2024個(gè)人簡易租房合同
- 2024《施工合同范本》
- 2024個(gè)人室內(nèi)裝修合同范本
- 企業(yè)安全文化建設(shè)與評價(jià)考核試卷
- 蘇州科技大學(xué)天平學(xué)院《江南絲竹》2022-2023學(xué)年第一學(xué)期期末試卷
- 蘇州科技大學(xué)天平學(xué)院《合唱與指揮一》2021-2022學(xué)年第一學(xué)期期末試卷
- 養(yǎng)老職業(yè)規(guī)劃
- 蘇州科技大學(xué)天平學(xué)院《鋼橋與組合結(jié)構(gòu)橋梁》2023-2024學(xué)年第一學(xué)期期末試卷
- 初中生不可不讀的經(jīng)典英語美文范文
- 藍(lán)海華騰變頻器說明書
- 陶瓷廠工藝設(shè)計(jì)42
- 頸椎病科普知識講座課件(PPT 45頁)
- 第2課 色彩的感染力 (5) 教案 初中美術(shù)人教版八年級上冊(2021-2022)
- 幼兒園家園共育培訓(xùn)PPT課件
- 4.2《各種各樣的土壤》教案公開課
- GA∕T 1788.3-2021 公安視頻圖像信息系統(tǒng)安全技術(shù)要求 第3部分:安全交互
- 最新商業(yè)建筑設(shè)計(jì)規(guī)范與商業(yè)建筑防火規(guī)范.
- 年產(chǎn)20萬噸燒堿電解工段的初步工藝設(shè)計(jì)
- 軟基處理監(jiān)測及檢測方案
評論
0/150
提交評論