Excel會(huì)計(jì)與財(cái)務(wù)管理-理論、方案暨模型第11章Excel財(cái)務(wù)管理系統(tǒng)的建立課件_第1頁
Excel會(huì)計(jì)與財(cái)務(wù)管理-理論、方案暨模型第11章Excel財(cái)務(wù)管理系統(tǒng)的建立課件_第2頁
Excel會(huì)計(jì)與財(cái)務(wù)管理-理論、方案暨模型第11章Excel財(cái)務(wù)管理系統(tǒng)的建立課件_第3頁
Excel會(huì)計(jì)與財(cái)務(wù)管理-理論、方案暨模型第11章Excel財(cái)務(wù)管理系統(tǒng)的建立課件_第4頁
Excel會(huì)計(jì)與財(cái)務(wù)管理-理論、方案暨模型第11章Excel財(cái)務(wù)管理系統(tǒng)的建立課件_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第11章Excel財(cái)務(wù)管理系統(tǒng)的建立本章主要內(nèi)容:

11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法第11章Excel財(cái)務(wù)管理系統(tǒng)的建立本章主要內(nèi)容:本章目標(biāo):本章目標(biāo):VBAVBA是基于VisualBasicforWindows發(fā)展而來的新一代標(biāo)準(zhǔn)宏語言,提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和相當(dāng)完整的程序設(shè)計(jì)語言。對(duì)于在工作中需要經(jīng)常使用Office套裝軟件的用戶,學(xué)習(xí)VBA有助于使工作自動(dòng)化,提高工作效率。另外,由于VBA可直接應(yīng)用Office套裝軟件的各項(xiàng)強(qiáng)大功能,所以對(duì)于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)也更加方便快捷。ExcelVBA中有各種層次的對(duì)象,每個(gè)對(duì)象又有其自身的屬性、方法和事件11.1宏和VBAVBA11.1宏和VBA對(duì)象與對(duì)象集合對(duì)象是代表應(yīng)用程序的元素。具體到Excel中,對(duì)象就是工作簿、工作表、單元格、圖表、窗體。VBA中使用對(duì)象的任一方法或?qū)傩灾?,必須先識(shí)別對(duì)象。對(duì)象集合對(duì)象集合是一個(gè)包含其它對(duì)象的對(duì)象,這些對(duì)象通常不是相同類型。他們經(jīng)過一個(gè)關(guān)系集合全部連接到一個(gè)公用的源對(duì)象。集合中的成員是一單獨(dú)的對(duì)象。如Workbooks集合中含有若干張Workbook,Sheets集合中含有若干張Sheet對(duì)象。具體內(nèi)容參見“對(duì)象瀏覽器”11.1宏和VBA對(duì)象與對(duì)象集合11.1宏和VBA屬性、方法和事件屬性屬性是關(guān)于某個(gè)對(duì)象的狀態(tài)(數(shù)據(jù)),定義了對(duì)象的特征,如球的大小、顏色等??梢酝ㄟ^修改對(duì)象的屬性值來改變對(duì)象的特征。方法方法是該對(duì)象可能被要求去執(zhí)行的動(dòng)作,如關(guān)閉、打開等。每一種想要對(duì)象做的操作都被稱為方法。事件事件是可被對(duì)象識(shí)別的動(dòng)作,如單擊鼠標(biāo)、激活工作表等。并且可以編寫代碼來響應(yīng)此動(dòng)作。通常事件發(fā)生時(shí),會(huì)執(zhí)行相應(yīng)的事件過程中的代碼。11.1宏和VBA屬性、方法和事件11.1宏和VBA屬性、方法和事件舉例VB中的窗體和控件是具有自己的屬性、方法和事件的對(duì)象??梢园褜傩钥醋饕粋€(gè)對(duì)象的性質(zhì),把方法看作對(duì)象的動(dòng)作,把事件看作對(duì)象的響應(yīng)。假設(shè)有電視對(duì)象,屬性:大小、顏色、品牌。方法:打開、關(guān)閉、調(diào)頻。事件:打開事件——播放節(jié)目、調(diào)頻事件——調(diào)換節(jié)目等用VBA編程如下:Television.Color=BlackTelevision.Size=43Television.Worked=False代碼語法:對(duì)象(Television),接著屬性(Color),對(duì)象和屬性之間用點(diǎn)(.)隔開,然后是賦值(Black)通常:Object.PropertyObject.Method11.1宏和VBA屬性、方法和事件舉例11.1宏和VBAExcel中的基本對(duì)象ApplicationWorkbookWorksheetsRangeVBA中的基本語句(自己復(fù)習(xí))聲明語句賦值語句可執(zhí)行語句順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)11.1宏和VBAExcel中的基本對(duì)象11.1宏和VBA宏宏程序是指用VBA提供的各種函數(shù)、語句、對(duì)象、方法和屬性等編寫的程序。宏程序可以被多次重復(fù)使用,自動(dòng)執(zhí)行復(fù)雜的任務(wù),減少完成任務(wù)所需的步驟。11.1宏和VBA宏11.1宏和VBA宏的創(chuàng)建和運(yùn)行使用宏錄制創(chuàng)建新宏使用VisualBasic編輯器創(chuàng)建新宏11.1宏和VBA宏的創(chuàng)建和運(yùn)行11.1宏和VBA11.1.2使用宏錄制器錄制宏宏錄制器是Excel提供的一種軟件工具,它能夠?qū)⒂脩舻牟僮鬟^程記錄下來,并自動(dòng)將所記錄的操作轉(zhuǎn)換成VBA程序代碼。對(duì)于經(jīng)常重復(fù)進(jìn)行的操作過程,可以通過宏錄制器將它記錄下來,當(dāng)需要再次進(jìn)行這些操作時(shí),只需運(yùn)行錄制的宏,Excel就能自動(dòng)完成這些重復(fù)的操作。需要注意的是,當(dāng)錄制宏的工作開始后,所有的操作步驟都將被記錄在宏中,所以應(yīng)盡量減少不必要的或錯(cuò)誤的操作,如果在錄制宏時(shí)出現(xiàn)失誤,更正失誤的操作也會(huì)記錄在宏中。

11.1.2使用宏錄制器錄制宏宏錄制器是Excel提供的11.1.2使用宏錄制器錄制宏_記錄宏程序的方法和步驟選擇【開發(fā)工具】菜單上的【錄制宏】命令。在“宏名”框中輸入宏程序的名稱。在“保存在”框中,指定存放宏的位置。在“說明”框中,輸入要錄制宏的有關(guān)說明信息。選擇【確定】按鈕,此時(shí)原來的【錄制宏】變?yōu)椤就V逛浿啤堪粹o。用戶可以進(jìn)行各種操作,如選定單元格、輸入標(biāo)題、設(shè)置表格等。單擊【停止錄制】按鈕,結(jié)束宏錄制。11.1.2使用宏錄制器錄制宏_記錄宏程序的方法和步驟11.1.2使用宏錄制器錄制宏_記錄宏實(shí)例【例11-1】打開工作簿cwgl11,用錄制宏的方式記錄以下工作:插入一張工作表,在新插入的工作表上制作一張簡(jiǎn)單的分部銷售情況表,表結(jié)構(gòu)如圖11-4所示。錄制一個(gè)能夠建立這種表結(jié)構(gòu)的宏Sales。圖11-4:銷售情況表11.1.2使用宏錄制器錄制宏_記錄宏實(shí)例【例11-1】打11.1.2使用宏錄制器錄制宏_錄制宏的過程:(1)選擇【開發(fā)工具】菜單上【錄制宏】命令;(2)在“宏名”框中輸入宏程序的名稱“Sales”;(3)在“保存在”框中指定存放宏的位置——“當(dāng)前工作簿”;(4)在“說明”框中,輸入要錄制宏的有關(guān)說明信息;(5)選擇【確定】按鈕,此時(shí)【停止錄制】按鈕出現(xiàn)在菜單上;(6)選擇【插入】菜單上的【工作表】命令;(7)選擇A1單元格,輸入“銷售情況表”;(8)依次在其他單元格輸入文字,并調(diào)整字體字號(hào);(9)選擇范圍A1:AF,合并單元格;(10)選擇標(biāo)題,居中顯示,單擊【字體】工具,選擇14號(hào),加粗字體;(11)單擊【停止錄制】按鈕,結(jié)束宏錄制。

11.1.2使用宏錄制器錄制宏_錄制宏的過程:(1)選擇【11.1.2使用宏錄制器錄制宏_查看所錄制的宏宏程序錄制完畢后,選擇工具欄上的【宏】命令,彈出“宏”對(duì)話框。在“宏名”框中選擇宏程序“Sales”,單擊【編輯】按鈕,則可顯示剛才所錄制的宏程序“Sales”。11.1.2使用宏錄制器錄制宏_查看所錄制的宏宏程序錄制完11.1.3利用VBA編寫宏程序

宏錄制器存在問題:錄制的宏往往語句冗長(zhǎng)(記錄了許多不需要的步驟,不需要的語句),會(huì)降低執(zhí)行速度當(dāng)錄制宏的工作開始后,所有的操作步驟都將被記錄在宏中,如果在錄制宏時(shí)出現(xiàn)失誤,更正失誤的操作也會(huì)記錄在宏中。有時(shí)為了更正操作,可能需要重新錄制新宏宏錄制器在靈活度方面有所欠缺有些功能是無法通過錄制實(shí)現(xiàn)的因此需要用VBA編寫宏程序11.1.3利用VBA編寫宏程序

宏錄制器存在問題:因此需11.1.3利用VBA編寫宏程序_宏程序的分類

⑴子程序子程序是VBA的最小程序單位。⑵函數(shù)函數(shù)由Function和EndFunction語句所包含起來的VBA語句組成。子程序可以執(zhí)行某種操作,但無返回值。Function函數(shù)和Sub子程序很類似,但函數(shù)有一個(gè)返回值。11.1.3利用VBA編寫宏程序_宏程序的分類

⑴子程序11.1.3利用VBA編寫宏程序_結(jié)構(gòu)化程序設(shè)計(jì)的控制結(jié)構(gòu)(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)11.1.3利用VBA編寫宏程序_結(jié)構(gòu)化程序設(shè)計(jì)的控制結(jié)構(gòu)11.1.3利用VBA編寫宏程序

(1)順序結(jié)構(gòu)在一般情況下,一個(gè)VBA的Sub子程序和Function函數(shù)的執(zhí)行都是從程序代碼的第一個(gè)語句行開始,逐條運(yùn)行程序代碼中的語句,直至遇到EndSub或EndFunction來結(jié)束整個(gè)程序的執(zhí)行。這就是順序結(jié)構(gòu)。11.1.3利用VBA編寫宏程序

(1)順序結(jié)構(gòu)11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

【例11-2】編寫一宏程序。過程名:PROCE1功能:在cwgl工作簿中的“Sales”工作表中,賦予B1單元報(bào)表的標(biāo)題“銷售情況分析表”;賦予B2單元日期“2014年12月”;在A3、B3、C3、D3、E3單元格中依次輸入“部門”、“實(shí)際銷售額”、“保本銷售額”、“盈虧狀況”、和“銷項(xiàng)稅”;在A4、B4、C4單元格中依次輸入“計(jì)算機(jī)部”、“100”和“80”。11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

【例1111.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

編制的宏程序如下:Subproce1()Range("B1").SelectActiveCell.FormulaR1C1="銷售情況分析表"Range("B2").SelectActiveCell.FormulaR1C1="2010年12月"Range("A3").SelectActiveCell.FormulaR1C1="部門"Range("B3").SelectActiveCell.FormulaR1C1="實(shí)際銷售額"Range("C3").Select11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

編制的宏11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

ActiveCell.FormulaR1C1="保本銷售額"Range("D3").SelectActiveCell.FormulaR1C1="盈虧狀況"Range("E3").SelectActiveCell.FormulaR1C1="銷項(xiàng)稅"Range("A4").SelectActiveCell.FormulaR1C1="計(jì)算機(jī)部"Range("B4").Value=100Range("C4").Value=80EndSub11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)有些時(shí)候,需要程序代碼按一定的條件執(zhí)行,當(dāng)條件成立時(shí),執(zhí)行一部分程序代碼,條件不成立時(shí)執(zhí)行另外一部分程序代碼。這種功能需要用VBA的選擇結(jié)構(gòu)來實(shí)現(xiàn)。VBA中的條件判斷語句有If語句和SelectCase語句兩種11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)有些時(shí)候,11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)①單分支語句——If…Then。單行結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句是最基本的條件語句,其語法結(jié)構(gòu)為:If邏輯表達(dá)式Then語句塊結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句中,滿足條件時(shí)只執(zhí)行一條語句,若有多行語句需要執(zhí)行,則需使用塊結(jié)構(gòu)條件語句。其語法結(jié)構(gòu)如下:

If邏輯表達(dá)式Then

語句序列1

語句序列211.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)①單分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)②二分支語句——If…Then…Else。其語法結(jié)構(gòu)如下:

If邏輯表達(dá)式Then

語句序列1Else

語句序列2EndIf11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)②二分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-3】編寫一宏程序。過程名:PROCE3功能:如果實(shí)際銷售額大于等于保本點(diǎn)銷售額,在屏幕上輸出“勝利完成任務(wù)!”,并在盈虧狀態(tài)單元格賦“盈利”;否則在屏幕上輸出“仍需努力!”,并在盈虧狀態(tài)單元賦“危險(xiǎn)”。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的宏程序如下:SubPROCE3()IfRange("B3").Value>=Range("C3").ValueThenMsgBox"勝利完成任務(wù)!"Range("D4").SelectActiveCell.FormulaR1C1="盈利"ElseMsgBox"仍需努力!"Range("D4").SelectActiveCell.FormulaR1C1="危險(xiǎn)"EndIfEndSub11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的宏程11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)③多分支語句:if…Then…ElseIf。語法結(jié)構(gòu)為:If條件1Then

語句組1ElseIf條件2Then

語句組2

……

ElseIf條件nThen

語句組nElse

語句組n+1EndIf11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)③多分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-4】某汽車出租公司可為顧客提供貨物運(yùn)送服務(wù),根據(jù)貨物的價(jià)值及運(yùn)輸路程設(shè)置運(yùn)費(fèi),并且可根據(jù)路程遠(yuǎn)近給予適當(dāng)?shù)恼劭邸TO(shè)運(yùn)費(fèi)F(單位為元),貨物單價(jià)P(單位為元),貨物重量W(單位為噸),路程S(公里)及優(yōu)惠系數(shù)(D)之間的關(guān)系式為:F=P*W*S*(1-D)。優(yōu)惠系數(shù)D與路程遠(yuǎn)近的關(guān)系如下,編寫計(jì)算折扣的函數(shù)。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的函數(shù)如下:Functiond(s)Ifs>=1000Thend=0.1ElseIfs>=750Thend=0.07ElseIfs>=500Thend=0.05ElseIfs>=250Thend=0.02Elsed=0EndIfEndFunction11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的函數(shù)11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)④多分支語句:SelectCase。SelectCase語句的語法結(jié)構(gòu)如下:SelectCase測(cè)試表達(dá)式Case表達(dá)式1

語句組1Case表達(dá)式2

語句組2

……CaseElse

語句組nEndSelect11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)④多分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例】編寫一宏程序。過程名:PROCE4功能:如果實(shí)際銷售額大于保本銷售額,在屏幕上輸出“盈利!”,并在盈虧狀態(tài)單元格賦“盈利”;如果實(shí)際銷售額等于保本銷售額,在屏幕上輸出“保本!”,并在盈虧狀態(tài)單元格賦“保本”;如果實(shí)際銷售額小于保本銷售額,在屏幕上輸出“虧損!”,并在盈虧狀態(tài)單元格賦“虧損”。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例】編寫11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的程序如下:SubPROCE4()DimsxAsDouble,bxAsDoublesx=Range("B4").Valuebx=Range("C4").ValueSelectCasesxCaseIs<bxMsgBox"虧損!"Range("D4").SelectActiveCell.FormulaR1C1="虧損"CaseIs=bxMsgBox"保本!"Range("D4").SelectActiveCell.FormulaR1C1="保本"CaseIs>bxMsgBox"盈利!"Range("D4").SelectActiveCell.FormulaR1C1="盈利"EndSelectEndSub11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的程序11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)在順序結(jié)構(gòu)的程序中,每個(gè)語句只執(zhí)行一次。在分支結(jié)構(gòu)的程序中,根據(jù)邏輯表達(dá)式的值選擇某一分支執(zhí)行,所選分支的語句也只執(zhí)行一次。然而,在處理實(shí)際問題時(shí),經(jīng)常要用同一種方法對(duì)不同的數(shù)據(jù)進(jìn)行重復(fù)處理,這些相同的操作可以通過重復(fù)執(zhí)行同一程序段來實(shí)現(xiàn)。這種重復(fù)執(zhí)行具有特定功能程序段的程序就是循環(huán)程序。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)在順序結(jié)構(gòu)11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)①For…Next循環(huán)結(jié)構(gòu)。語法結(jié)構(gòu)為:Forcounter=startToend[step步長(zhǎng)]

循環(huán)語句1

循環(huán)語句2

循環(huán)語句3

……

循環(huán)語句nNext[counter]該結(jié)構(gòu)的功能是:將初值賦給計(jì)數(shù)器counter。當(dāng)初值start沒有達(dá)到終值end時(shí),VBA自動(dòng)循環(huán)執(zhí)行循環(huán)體中的循環(huán)語句,每執(zhí)行一次循環(huán),計(jì)數(shù)器加1或增加指定的步長(zhǎng)step步長(zhǎng);當(dāng)計(jì)數(shù)器達(dá)到終值時(shí),跳出循環(huán)。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)①For…11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-6】某公司職工檔案數(shù)據(jù)保存在Excel工作表中,如圖11-8所示。該公司共有1236名職工,每月要從工資表中扣除一定的住房公積金,假設(shè)住房公積金按以下的百分比扣除。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)首先,自定義函數(shù)計(jì)算公積金的百分比。Functioncountrate(salaryAsDouble)DimrateAsDoubleIfsalary>2000Then rate=0.1ElseIfsalary>1500Then rate=0.07ElseIfsalary>1200Then rate=0.05ElseIfsalary>1000Then rate=0.02ElseIfsalary>800Then rate=0.01Elserate=0EndIfcountrate=rateEndFunction11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)首先,自定11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)編寫計(jì)算所有職工工積金的宏P(guān)RO5:SubPROCE5()Fori=3To1236r=countrate(Cells(i,2))Cells(i,3)=rCells(i,3).Style="Percent"Cells(i,4)=r*Cells(i,2)Cells(i,5)=Cells(i,2)-Cells(i,4)NextEndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)編寫計(jì)算所11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)②Do…Loop循環(huán)結(jié)構(gòu)。語法結(jié)構(gòu)是:DoWhile條件語句序列Loop功能:當(dāng)條件成立時(shí),VBA重復(fù)執(zhí)行語句序列直到條件不成立,跳出循環(huán)。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)②Do…L11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-7】繼續(xù)例11-6,假設(shè)并不知道有多少位職工,在其他條件都相同的條件下,現(xiàn)用Do…Loop循環(huán)結(jié)構(gòu)來計(jì)算每位職工的住房公積金比例、應(yīng)交公積金和實(shí)際發(fā)放工資。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)SubPROCE6() i=3 Do r=countrate(Cells(i,2)) Cells(i,3)=r Cells(i,3).Style="Percent" Cells(i,4)=r*Cells(i,2) Cells(i,5)=Cells(i,2)-Cells(i,4) i=i+1 LoopUntil(IsEmpty(Cells(i,2)))EndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)SubP11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)③ForEach…Next語句。ForEach…Next循環(huán)與For…Next循環(huán)類似,但它針對(duì)數(shù)組或?qū)ο蠹现械拿恳辉刂貜?fù)一組語句,而不是重復(fù)語句一定的次數(shù)。語法結(jié)構(gòu):ForEach對(duì)象元素變量in對(duì)象集合語句序列1[ExitFor][語句序列2]Next對(duì)象元素變量11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)③For11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-10】編寫一程序過程名:PROCE7功能:關(guān)閉所有打開的工作簿。編寫的宏程序如下:SubPROCE7()ForEachBookinWorkbooks()

Book.CloseNextBookEndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏2.在開發(fā)環(huán)境下運(yùn)行宏11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏在Excel界面運(yùn)行宏,適用于所有環(huán)境,可通過【開發(fā)工具】,點(diǎn)擊“宏”,再選擇宏名,點(diǎn)擊【執(zhí)行】或者在工作表打開狀態(tài)下直接調(diào)用快捷鍵ALT+F8,彈出宏界面,再選擇宏名,點(diǎn)擊【執(zhí)行】。通過選擇自定義菜單或點(diǎn)擊自定義按鈕的方式執(zhí)行宏(詳見本章11.2和11.3內(nèi)容)將宏配置為在打開工作簿時(shí)自動(dòng)運(yùn)行(詳見本章11.4節(jié)內(nèi)容)。11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏11.1.4宏程序的運(yùn)行2.在開發(fā)環(huán)境下運(yùn)行宏首先打開MicrosoftVisualBasic界面,然后在【運(yùn)行】菜單上單擊【運(yùn)行宏】,或者單擊工具欄中的“運(yùn)行宏”

或者按F5鍵調(diào)出“宏”對(duì)話框。11.1.4宏程序的運(yùn)行2.在開發(fā)環(huán)境下運(yùn)行宏第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)本節(jié)主要內(nèi)容:11.2.1界面設(shè)計(jì)的主要工具11.2.2建立各模塊用戶界面11.2.3建立財(cái)務(wù)管理系統(tǒng)界面11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)本節(jié)主要內(nèi)容:11.2.1界面設(shè)計(jì)的主要工具主要工具:形狀工具插入/插圖/形狀

繪圖工具開始/繪圖

表單控件開發(fā)工具/插入/表單控件11.2.1界面設(shè)計(jì)的主要工具主要工具:11.2.2建立各模塊用戶界面11.2.2建立各模塊用戶界面11.2.3建立財(cái)務(wù)管理系統(tǒng)界面1.繪制圖形2.建立圖形與各功能模塊之間的鏈接11.2.3建立財(cái)務(wù)管理系統(tǒng)界面1.繪制圖形第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)本節(jié)主要內(nèi)容:11.3.1菜單管理器11.3.2在菜單欄中增加【財(cái)務(wù)管理】菜單11.3.3財(cái)務(wù)管理系統(tǒng)框架11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)本節(jié)主要內(nèi)容:11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)_建立新菜單的步驟1.選擇【文件】菜單下的【選項(xiàng)】【自定義功能區(qū)】命令,2.在彈出【自定義功能區(qū)】對(duì)話框“從下列位置選擇命令”中選擇【宏】,3.“自定義功能區(qū)”選擇【主選項(xiàng)卡】后,就可以進(jìn)行各種修改操作了。11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)_建立新菜單的步驟1.選擇【11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)_財(cái)務(wù)管理系統(tǒng)框架財(cái)務(wù)分析賬務(wù)處理籌資決策數(shù)據(jù)處理基礎(chǔ)項(xiàng)目投資決策證券投資分析盈虧平衡與經(jīng)濟(jì)訂貨量最優(yōu)化問題財(cái)務(wù)預(yù)測(cè)比率分析杜邦分析長(zhǎng)期借款籌資決策租賃借款決策...固定資產(chǎn)更新決策...債券投資分析模型股票投資分析模型盈虧平衡模型經(jīng)濟(jì)訂貨量模型資金管理生產(chǎn)管理投資組合銷售預(yù)測(cè)模型利潤預(yù)測(cè)模型Excel財(cái)務(wù)管理系統(tǒng)圖11-17Excel財(cái)務(wù)管理系統(tǒng)功能結(jié)構(gòu)圖11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)_財(cái)務(wù)管理系統(tǒng)框架財(cái)務(wù)分析賬第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法

第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法本節(jié)主要內(nèi)容:11.4.1對(duì)話框操作11.4.2自動(dòng)運(yùn)行宏程序11.4.3將財(cái)務(wù)管理系統(tǒng)所在的工作簿設(shè)置為在Excel啟動(dòng)時(shí)自動(dòng)打開11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法本節(jié)主要內(nèi)容:11.4.1對(duì)話框操作MsgBox函數(shù):MsgBox對(duì)話框函數(shù)可用以向用戶顯示一些提示信息。函數(shù)用法:MsgBox(prompt[,buttons][,title][,helpfile,context])11.4.1對(duì)話框操作MsgBox函數(shù):MsgBox對(duì)話框11.4.1對(duì)話框操作其中各參數(shù)及其說明:參數(shù)說明prompt必選。字符串表達(dá)式,在對(duì)話框中顯示為消息。prompt的最大長(zhǎng)度約為1024個(gè)字符,具體長(zhǎng)度取決于所用字符的寬度。如果prompt包含多行,可在各行之間使用回車符、換行符或回車符與換行符的組合來分隔各行。buttons可選。其值為數(shù)值表達(dá)式,它是值的總和,這些值指定要顯示的按鈕的數(shù)目和類型、要使用的圖標(biāo)樣式、默認(rèn)按鈕的標(biāo)識(shí)以及消息框的模態(tài)。如果省略此參數(shù),則buttons的默認(rèn)值為0。title可選。字符串表達(dá)式,顯示在對(duì)話框的標(biāo)題欄中。如果省略title,則標(biāo)題欄中將顯示應(yīng)用程序名稱。helpfile可選。字符串表達(dá)式,用于標(biāo)識(shí)為對(duì)話框提供上下文相關(guān)幫助的幫助文件。如果提供helpfile,必須同時(shí)提供context。context可選。其值為數(shù)值表達(dá)式,它是幫助文件的作者為相應(yīng)幫助主題分配的幫助上下文編號(hào)。如果提供context,必須同時(shí)提供helpfile。11.4.1對(duì)話框操作其中各參數(shù)及其說明:參數(shù)說明prom11.4.2自動(dòng)運(yùn)行宏程序VBA提供了兩個(gè)非常有用的自動(dòng)運(yùn)行宏:Auto_Open將在打開工作簿時(shí)被自動(dòng)執(zhí)行Auto_Close會(huì)在關(guān)閉工作簿時(shí)被自動(dòng)調(diào)用11.4.2自動(dòng)運(yùn)行宏程序VBA提供了兩個(gè)非常有用的自動(dòng)運(yùn)11.4.2自動(dòng)運(yùn)行宏程序_Auto_Open【例11-12】建立一個(gè)當(dāng)工作簿打開時(shí)自動(dòng)運(yùn)行的宏程序,其功能是:顯示“歡迎您使用Excel財(cái)務(wù)管理系統(tǒng)”,并自動(dòng)顯示財(cái)務(wù)管理系統(tǒng)主界面。建立的宏程序如下:SubAuto_Open()MsgBox("歡迎您使用Excel財(cái)務(wù)管理系統(tǒng)")Sheets("Excel財(cái)務(wù)管理系統(tǒng)界面").SelectEndSub11.4.2自動(dòng)運(yùn)行宏程序_Auto_Open【例11-11.4.2自動(dòng)運(yùn)行宏程序_Auto_Close【例11-13】在“Excel財(cái)務(wù)管理系統(tǒng)”工作簿中,編寫一個(gè)當(dāng)工作簿關(guān)閉時(shí)自動(dòng)運(yùn)行的宏程序,其功能是:顯示“感謝您使用財(cái)務(wù)管理系統(tǒng),再見!”編寫的宏程序如下:SubAuto_Close()MsgBox("感謝您使用財(cái)務(wù)管理系統(tǒng),再見!")EndSub11.4.2自動(dòng)運(yùn)行宏程序_Auto_Close【例1111.4.3Excel啟動(dòng)時(shí)自動(dòng)打開【例11-14】將“Excel財(cái)務(wù)管理系統(tǒng)”工作簿設(shè)置為自動(dòng)啟動(dòng)工作簿。方法:用【文件】菜單中【另存為】命令或者文件管理器中的【復(fù)制】命令,將“Excel財(cái)務(wù)管理系統(tǒng)”工作簿復(fù)制到Excel目錄下的XLSTART子目錄下。11.4.3Excel啟動(dòng)時(shí)自動(dòng)打開【例11-14】將“本章小結(jié)本章主要學(xué)習(xí)了建立完整的財(cái)務(wù)管理系統(tǒng)的方法,包括:宏的錄制與編寫建立用戶界面設(shè)置宏按鈕設(shè)計(jì)系統(tǒng)菜單將宏程序指定給宏按鈕或菜單項(xiàng)(命令)編寫自動(dòng)運(yùn)行宏設(shè)置模型自動(dòng)啟動(dòng)其他本章小結(jié)本章主要學(xué)習(xí)了建立完整的財(cái)務(wù)管理系統(tǒng)的方法,包括:Q&AQ&A第11章Excel財(cái)務(wù)管理系統(tǒng)的建立本章主要內(nèi)容:

11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法第11章Excel財(cái)務(wù)管理系統(tǒng)的建立本章主要內(nèi)容:本章目標(biāo):本章目標(biāo):VBAVBA是基于VisualBasicforWindows發(fā)展而來的新一代標(biāo)準(zhǔn)宏語言,提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和相當(dāng)完整的程序設(shè)計(jì)語言。對(duì)于在工作中需要經(jīng)常使用Office套裝軟件的用戶,學(xué)習(xí)VBA有助于使工作自動(dòng)化,提高工作效率。另外,由于VBA可直接應(yīng)用Office套裝軟件的各項(xiàng)強(qiáng)大功能,所以對(duì)于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)也更加方便快捷。ExcelVBA中有各種層次的對(duì)象,每個(gè)對(duì)象又有其自身的屬性、方法和事件11.1宏和VBAVBA11.1宏和VBA對(duì)象與對(duì)象集合對(duì)象是代表應(yīng)用程序的元素。具體到Excel中,對(duì)象就是工作簿、工作表、單元格、圖表、窗體。VBA中使用對(duì)象的任一方法或?qū)傩灾埃仨毾茸R(shí)別對(duì)象。對(duì)象集合對(duì)象集合是一個(gè)包含其它對(duì)象的對(duì)象,這些對(duì)象通常不是相同類型。他們經(jīng)過一個(gè)關(guān)系集合全部連接到一個(gè)公用的源對(duì)象。集合中的成員是一單獨(dú)的對(duì)象。如Workbooks集合中含有若干張Workbook,Sheets集合中含有若干張Sheet對(duì)象。具體內(nèi)容參見“對(duì)象瀏覽器”11.1宏和VBA對(duì)象與對(duì)象集合11.1宏和VBA屬性、方法和事件屬性屬性是關(guān)于某個(gè)對(duì)象的狀態(tài)(數(shù)據(jù)),定義了對(duì)象的特征,如球的大小、顏色等。可以通過修改對(duì)象的屬性值來改變對(duì)象的特征。方法方法是該對(duì)象可能被要求去執(zhí)行的動(dòng)作,如關(guān)閉、打開等。每一種想要對(duì)象做的操作都被稱為方法。事件事件是可被對(duì)象識(shí)別的動(dòng)作,如單擊鼠標(biāo)、激活工作表等。并且可以編寫代碼來響應(yīng)此動(dòng)作。通常事件發(fā)生時(shí),會(huì)執(zhí)行相應(yīng)的事件過程中的代碼。11.1宏和VBA屬性、方法和事件11.1宏和VBA屬性、方法和事件舉例VB中的窗體和控件是具有自己的屬性、方法和事件的對(duì)象。可以把屬性看作一個(gè)對(duì)象的性質(zhì),把方法看作對(duì)象的動(dòng)作,把事件看作對(duì)象的響應(yīng)。假設(shè)有電視對(duì)象,屬性:大小、顏色、品牌。方法:打開、關(guān)閉、調(diào)頻。事件:打開事件——播放節(jié)目、調(diào)頻事件——調(diào)換節(jié)目等用VBA編程如下:Television.Color=BlackTelevision.Size=43Television.Worked=False代碼語法:對(duì)象(Television),接著屬性(Color),對(duì)象和屬性之間用點(diǎn)(.)隔開,然后是賦值(Black)通常:Object.PropertyObject.Method11.1宏和VBA屬性、方法和事件舉例11.1宏和VBAExcel中的基本對(duì)象ApplicationWorkbookWorksheetsRangeVBA中的基本語句(自己復(fù)習(xí))聲明語句賦值語句可執(zhí)行語句順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)11.1宏和VBAExcel中的基本對(duì)象11.1宏和VBA宏宏程序是指用VBA提供的各種函數(shù)、語句、對(duì)象、方法和屬性等編寫的程序。宏程序可以被多次重復(fù)使用,自動(dòng)執(zhí)行復(fù)雜的任務(wù),減少完成任務(wù)所需的步驟。11.1宏和VBA宏11.1宏和VBA宏的創(chuàng)建和運(yùn)行使用宏錄制創(chuàng)建新宏使用VisualBasic編輯器創(chuàng)建新宏11.1宏和VBA宏的創(chuàng)建和運(yùn)行11.1宏和VBA11.1.2使用宏錄制器錄制宏宏錄制器是Excel提供的一種軟件工具,它能夠?qū)⒂脩舻牟僮鬟^程記錄下來,并自動(dòng)將所記錄的操作轉(zhuǎn)換成VBA程序代碼。對(duì)于經(jīng)常重復(fù)進(jìn)行的操作過程,可以通過宏錄制器將它記錄下來,當(dāng)需要再次進(jìn)行這些操作時(shí),只需運(yùn)行錄制的宏,Excel就能自動(dòng)完成這些重復(fù)的操作。需要注意的是,當(dāng)錄制宏的工作開始后,所有的操作步驟都將被記錄在宏中,所以應(yīng)盡量減少不必要的或錯(cuò)誤的操作,如果在錄制宏時(shí)出現(xiàn)失誤,更正失誤的操作也會(huì)記錄在宏中。

11.1.2使用宏錄制器錄制宏宏錄制器是Excel提供的11.1.2使用宏錄制器錄制宏_記錄宏程序的方法和步驟選擇【開發(fā)工具】菜單上的【錄制宏】命令。在“宏名”框中輸入宏程序的名稱。在“保存在”框中,指定存放宏的位置。在“說明”框中,輸入要錄制宏的有關(guān)說明信息。選擇【確定】按鈕,此時(shí)原來的【錄制宏】變?yōu)椤就V逛浿啤堪粹o。用戶可以進(jìn)行各種操作,如選定單元格、輸入標(biāo)題、設(shè)置表格等。單擊【停止錄制】按鈕,結(jié)束宏錄制。11.1.2使用宏錄制器錄制宏_記錄宏程序的方法和步驟11.1.2使用宏錄制器錄制宏_記錄宏實(shí)例【例11-1】打開工作簿cwgl11,用錄制宏的方式記錄以下工作:插入一張工作表,在新插入的工作表上制作一張簡(jiǎn)單的分部銷售情況表,表結(jié)構(gòu)如圖11-4所示。錄制一個(gè)能夠建立這種表結(jié)構(gòu)的宏Sales。圖11-4:銷售情況表11.1.2使用宏錄制器錄制宏_記錄宏實(shí)例【例11-1】打11.1.2使用宏錄制器錄制宏_錄制宏的過程:(1)選擇【開發(fā)工具】菜單上【錄制宏】命令;(2)在“宏名”框中輸入宏程序的名稱“Sales”;(3)在“保存在”框中指定存放宏的位置——“當(dāng)前工作簿”;(4)在“說明”框中,輸入要錄制宏的有關(guān)說明信息;(5)選擇【確定】按鈕,此時(shí)【停止錄制】按鈕出現(xiàn)在菜單上;(6)選擇【插入】菜單上的【工作表】命令;(7)選擇A1單元格,輸入“銷售情況表”;(8)依次在其他單元格輸入文字,并調(diào)整字體字號(hào);(9)選擇范圍A1:AF,合并單元格;(10)選擇標(biāo)題,居中顯示,單擊【字體】工具,選擇14號(hào),加粗字體;(11)單擊【停止錄制】按鈕,結(jié)束宏錄制。

11.1.2使用宏錄制器錄制宏_錄制宏的過程:(1)選擇【11.1.2使用宏錄制器錄制宏_查看所錄制的宏宏程序錄制完畢后,選擇工具欄上的【宏】命令,彈出“宏”對(duì)話框。在“宏名”框中選擇宏程序“Sales”,單擊【編輯】按鈕,則可顯示剛才所錄制的宏程序“Sales”。11.1.2使用宏錄制器錄制宏_查看所錄制的宏宏程序錄制完11.1.3利用VBA編寫宏程序

宏錄制器存在問題:錄制的宏往往語句冗長(zhǎng)(記錄了許多不需要的步驟,不需要的語句),會(huì)降低執(zhí)行速度當(dāng)錄制宏的工作開始后,所有的操作步驟都將被記錄在宏中,如果在錄制宏時(shí)出現(xiàn)失誤,更正失誤的操作也會(huì)記錄在宏中。有時(shí)為了更正操作,可能需要重新錄制新宏宏錄制器在靈活度方面有所欠缺有些功能是無法通過錄制實(shí)現(xiàn)的因此需要用VBA編寫宏程序11.1.3利用VBA編寫宏程序

宏錄制器存在問題:因此需11.1.3利用VBA編寫宏程序_宏程序的分類

⑴子程序子程序是VBA的最小程序單位。⑵函數(shù)函數(shù)由Function和EndFunction語句所包含起來的VBA語句組成。子程序可以執(zhí)行某種操作,但無返回值。Function函數(shù)和Sub子程序很類似,但函數(shù)有一個(gè)返回值。11.1.3利用VBA編寫宏程序_宏程序的分類

⑴子程序11.1.3利用VBA編寫宏程序_結(jié)構(gòu)化程序設(shè)計(jì)的控制結(jié)構(gòu)(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)11.1.3利用VBA編寫宏程序_結(jié)構(gòu)化程序設(shè)計(jì)的控制結(jié)構(gòu)11.1.3利用VBA編寫宏程序

(1)順序結(jié)構(gòu)在一般情況下,一個(gè)VBA的Sub子程序和Function函數(shù)的執(zhí)行都是從程序代碼的第一個(gè)語句行開始,逐條運(yùn)行程序代碼中的語句,直至遇到EndSub或EndFunction來結(jié)束整個(gè)程序的執(zhí)行。這就是順序結(jié)構(gòu)。11.1.3利用VBA編寫宏程序

(1)順序結(jié)構(gòu)11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

【例11-2】編寫一宏程序。過程名:PROCE1功能:在cwgl工作簿中的“Sales”工作表中,賦予B1單元報(bào)表的標(biāo)題“銷售情況分析表”;賦予B2單元日期“2014年12月”;在A3、B3、C3、D3、E3單元格中依次輸入“部門”、“實(shí)際銷售額”、“保本銷售額”、“盈虧狀況”、和“銷項(xiàng)稅”;在A4、B4、C4單元格中依次輸入“計(jì)算機(jī)部”、“100”和“80”。11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

【例1111.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

編制的宏程序如下:Subproce1()Range("B1").SelectActiveCell.FormulaR1C1="銷售情況分析表"Range("B2").SelectActiveCell.FormulaR1C1="2010年12月"Range("A3").SelectActiveCell.FormulaR1C1="部門"Range("B3").SelectActiveCell.FormulaR1C1="實(shí)際銷售額"Range("C3").Select11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

編制的宏11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

ActiveCell.FormulaR1C1="保本銷售額"Range("D3").SelectActiveCell.FormulaR1C1="盈虧狀況"Range("E3").SelectActiveCell.FormulaR1C1="銷項(xiàng)稅"Range("A4").SelectActiveCell.FormulaR1C1="計(jì)算機(jī)部"Range("B4").Value=100Range("C4").Value=80EndSub11.1.3利用VBA編寫宏程序_(1)順序結(jié)構(gòu)

11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)有些時(shí)候,需要程序代碼按一定的條件執(zhí)行,當(dāng)條件成立時(shí),執(zhí)行一部分程序代碼,條件不成立時(shí)執(zhí)行另外一部分程序代碼。這種功能需要用VBA的選擇結(jié)構(gòu)來實(shí)現(xiàn)。VBA中的條件判斷語句有If語句和SelectCase語句兩種11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)有些時(shí)候,11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)①單分支語句——If…Then。單行結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句是最基本的條件語句,其語法結(jié)構(gòu)為:If邏輯表達(dá)式Then語句塊結(jié)構(gòu)條件語句單行結(jié)構(gòu)條件語句中,滿足條件時(shí)只執(zhí)行一條語句,若有多行語句需要執(zhí)行,則需使用塊結(jié)構(gòu)條件語句。其語法結(jié)構(gòu)如下:

If邏輯表達(dá)式Then

語句序列1

語句序列211.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)①單分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)②二分支語句——If…Then…Else。其語法結(jié)構(gòu)如下:

If邏輯表達(dá)式Then

語句序列1Else

語句序列2EndIf11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)②二分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-3】編寫一宏程序。過程名:PROCE3功能:如果實(shí)際銷售額大于等于保本點(diǎn)銷售額,在屏幕上輸出“勝利完成任務(wù)!”,并在盈虧狀態(tài)單元格賦“盈利”;否則在屏幕上輸出“仍需努力!”,并在盈虧狀態(tài)單元賦“危險(xiǎn)”。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的宏程序如下:SubPROCE3()IfRange("B3").Value>=Range("C3").ValueThenMsgBox"勝利完成任務(wù)!"Range("D4").SelectActiveCell.FormulaR1C1="盈利"ElseMsgBox"仍需努力!"Range("D4").SelectActiveCell.FormulaR1C1="危險(xiǎn)"EndIfEndSub11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的宏程11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)③多分支語句:if…Then…ElseIf。語法結(jié)構(gòu)為:If條件1Then

語句組1ElseIf條件2Then

語句組2

……

ElseIf條件nThen

語句組nElse

語句組n+1EndIf11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)③多分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-4】某汽車出租公司可為顧客提供貨物運(yùn)送服務(wù),根據(jù)貨物的價(jià)值及運(yùn)輸路程設(shè)置運(yùn)費(fèi),并且可根據(jù)路程遠(yuǎn)近給予適當(dāng)?shù)恼劭?。設(shè)運(yùn)費(fèi)F(單位為元),貨物單價(jià)P(單位為元),貨物重量W(單位為噸),路程S(公里)及優(yōu)惠系數(shù)(D)之間的關(guān)系式為:F=P*W*S*(1-D)。優(yōu)惠系數(shù)D與路程遠(yuǎn)近的關(guān)系如下,編寫計(jì)算折扣的函數(shù)。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的函數(shù)如下:Functiond(s)Ifs>=1000Thend=0.1ElseIfs>=750Thend=0.07ElseIfs>=500Thend=0.05ElseIfs>=250Thend=0.02Elsed=0EndIfEndFunction11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的函數(shù)11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)④多分支語句:SelectCase。SelectCase語句的語法結(jié)構(gòu)如下:SelectCase測(cè)試表達(dá)式Case表達(dá)式1

語句組1Case表達(dá)式2

語句組2

……CaseElse

語句組nEndSelect11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)④多分支語11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例】編寫一宏程序。過程名:PROCE4功能:如果實(shí)際銷售額大于保本銷售額,在屏幕上輸出“盈利!”,并在盈虧狀態(tài)單元格賦“盈利”;如果實(shí)際銷售額等于保本銷售額,在屏幕上輸出“保本!”,并在盈虧狀態(tài)單元格賦“保本”;如果實(shí)際銷售額小于保本銷售額,在屏幕上輸出“虧損!”,并在盈虧狀態(tài)單元格賦“虧損”。11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)【例】編寫11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的程序如下:SubPROCE4()DimsxAsDouble,bxAsDoublesx=Range("B4").Valuebx=Range("C4").ValueSelectCasesxCaseIs<bxMsgBox"虧損!"Range("D4").SelectActiveCell.FormulaR1C1="虧損"CaseIs=bxMsgBox"保本!"Range("D4").SelectActiveCell.FormulaR1C1="保本"CaseIs>bxMsgBox"盈利!"Range("D4").SelectActiveCell.FormulaR1C1="盈利"EndSelectEndSub11.1.3利用VBA編寫宏程序_(2)選擇結(jié)構(gòu)編寫的程序11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)在順序結(jié)構(gòu)的程序中,每個(gè)語句只執(zhí)行一次。在分支結(jié)構(gòu)的程序中,根據(jù)邏輯表達(dá)式的值選擇某一分支執(zhí)行,所選分支的語句也只執(zhí)行一次。然而,在處理實(shí)際問題時(shí),經(jīng)常要用同一種方法對(duì)不同的數(shù)據(jù)進(jìn)行重復(fù)處理,這些相同的操作可以通過重復(fù)執(zhí)行同一程序段來實(shí)現(xiàn)。這種重復(fù)執(zhí)行具有特定功能程序段的程序就是循環(huán)程序。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)在順序結(jié)構(gòu)11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)①For…Next循環(huán)結(jié)構(gòu)。語法結(jié)構(gòu)為:Forcounter=startToend[step步長(zhǎng)]

循環(huán)語句1

循環(huán)語句2

循環(huán)語句3

……

循環(huán)語句nNext[counter]該結(jié)構(gòu)的功能是:將初值賦給計(jì)數(shù)器counter。當(dāng)初值start沒有達(dá)到終值end時(shí),VBA自動(dòng)循環(huán)執(zhí)行循環(huán)體中的循環(huán)語句,每執(zhí)行一次循環(huán),計(jì)數(shù)器加1或增加指定的步長(zhǎng)step步長(zhǎng);當(dāng)計(jì)數(shù)器達(dá)到終值時(shí),跳出循環(huán)。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)①For…11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-6】某公司職工檔案數(shù)據(jù)保存在Excel工作表中,如圖11-8所示。該公司共有1236名職工,每月要從工資表中扣除一定的住房公積金,假設(shè)住房公積金按以下的百分比扣除。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)首先,自定義函數(shù)計(jì)算公積金的百分比。Functioncountrate(salaryAsDouble)DimrateAsDoubleIfsalary>2000Then rate=0.1ElseIfsalary>1500Then rate=0.07ElseIfsalary>1200Then rate=0.05ElseIfsalary>1000Then rate=0.02ElseIfsalary>800Then rate=0.01Elserate=0EndIfcountrate=rateEndFunction11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)首先,自定11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)編寫計(jì)算所有職工工積金的宏P(guān)RO5:SubPROCE5()Fori=3To1236r=countrate(Cells(i,2))Cells(i,3)=rCells(i,3).Style="Percent"Cells(i,4)=r*Cells(i,2)Cells(i,5)=Cells(i,2)-Cells(i,4)NextEndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)編寫計(jì)算所11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)②Do…Loop循環(huán)結(jié)構(gòu)。語法結(jié)構(gòu)是:DoWhile條件語句序列Loop功能:當(dāng)條件成立時(shí),VBA重復(fù)執(zhí)行語句序列直到條件不成立,跳出循環(huán)。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)②Do…L11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-7】繼續(xù)例11-6,假設(shè)并不知道有多少位職工,在其他條件都相同的條件下,現(xiàn)用Do…Loop循環(huán)結(jié)構(gòu)來計(jì)算每位職工的住房公積金比例、應(yīng)交公積金和實(shí)際發(fā)放工資。11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)SubPROCE6() i=3 Do r=countrate(Cells(i,2)) Cells(i,3)=r Cells(i,3).Style="Percent" Cells(i,4)=r*Cells(i,2) Cells(i,5)=Cells(i,2)-Cells(i,4) i=i+1 LoopUntil(IsEmpty(Cells(i,2)))EndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)SubP11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)③ForEach…Next語句。ForEach…Next循環(huán)與For…Next循環(huán)類似,但它針對(duì)數(shù)組或?qū)ο蠹现械拿恳辉刂貜?fù)一組語句,而不是重復(fù)語句一定的次數(shù)。語法結(jié)構(gòu):ForEach對(duì)象元素變量in對(duì)象集合語句序列1[ExitFor][語句序列2]Next對(duì)象元素變量11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)③For11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-10】編寫一程序過程名:PROCE7功能:關(guān)閉所有打開的工作簿。編寫的宏程序如下:SubPROCE7()ForEachBookinWorkbooks()

Book.CloseNextBookEndSub11.1.3利用VBA編寫宏程序_(3)循環(huán)結(jié)構(gòu)【例11-11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏2.在開發(fā)環(huán)境下運(yùn)行宏11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏在Excel界面運(yùn)行宏,適用于所有環(huán)境,可通過【開發(fā)工具】,點(diǎn)擊“宏”,再選擇宏名,點(diǎn)擊【執(zhí)行】或者在工作表打開狀態(tài)下直接調(diào)用快捷鍵ALT+F8,彈出宏界面,再選擇宏名,點(diǎn)擊【執(zhí)行】。通過選擇自定義菜單或點(diǎn)擊自定義按鈕的方式執(zhí)行宏(詳見本章11.2和11.3內(nèi)容)將宏配置為在打開工作簿時(shí)自動(dòng)運(yùn)行(詳見本章11.4節(jié)內(nèi)容)。11.1.4宏程序的運(yùn)行1.在Excel界面運(yùn)行宏11.1.4宏程序的運(yùn)行2.在開發(fā)環(huán)境下運(yùn)行宏首先打開MicrosoftVisualBasic界面,然后在【運(yùn)行】菜單上單擊【運(yùn)行宏】,或者單擊工具欄中的“運(yùn)行宏”

或者按F5鍵調(diào)出“宏”對(duì)話框。11.1.4宏程序的運(yùn)行2.在開發(fā)環(huán)境下運(yùn)行宏第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.1宏和VBA

11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)

11.3財(cái)務(wù)管理系統(tǒng)菜單的設(shè)計(jì)

11.4控制應(yīng)用系統(tǒng)自動(dòng)啟動(dòng)的方法第11章Excel財(cái)務(wù)管理系統(tǒng)的建立11.11.2財(cái)務(wù)管理模型用戶界面的設(shè)計(jì)本節(jié)主要內(nèi)容:11.2.1界面設(shè)計(jì)的主要工具11.2.2建立各模塊用戶界面11.2.3建立財(cái)務(wù)管理系統(tǒng)界面11.2財(cái)務(wù)管理模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論