一、什么是宏,? 1,、 宏錄制器好比就是個錄像機,它具備有錄像機的錄制和播放功能,,當然錄像機錄制的是視頻資料,,而宏錄制器錄制的剛是操作命令集,,即宏。 2,、 引伸到Excel中,,當你打開宏的錄制功能時,宏錄制器會像錄像機一樣將你在Excel中的大多數(shù)操作進行錄制,,并且可對這些錄制內容(即代碼)進行回放和編輯,。 二、實例演示宏錄制,,執(zhí)行(回放)的過程 1,、 打開Excel工作表→工具→宏→錄制新宏→宏的名稱→確定→先中A1單元格→字體改為12號字→顏色橙色→停止錄制宏。 2,、 回放,,選中2月工作表→工具→宏→執(zhí)行宏?;胤磐瓿?。 3、 修改宏,,工具→宏→Visual Basic編輯器(Alt+F11)→雙擊模塊1→正文前加dim sht as wotksheet For each sht in thisworkbook.worksheets Sht.select Next End sub 右擊→smart indent →indent procedure 美化代碼 4,、 運行子過程/用戶窗體→視圖Microslft Excel 5、 Crtl+F11,右擊→VBA Friend→Add Line Nunbers 6,、 分析,,sub后面為宏的名字 '開頭為注釋,不被執(zhí)行,, 第10行為dim語言,, 第20-210行為for each With 語句是宏的主要語句通常和selection font并用 Name = “微軟雅黑” Strikethrough = false …… Colorindex = xlautomatic 不影響宏執(zhí)行可刪除 刪除多余的代碼提高運行速度 三、介紹一個批量打印文檔的宏 Sub sanjteprinter() Application sereenupdating = false With application.file search .lookin = “d:我的文檔桌面已經(jīng)實施行” 此處為可變 .filetype = msofile typecxcelworkbook .search subfolders = true If execute>0 then For I = 1 to.foundfiles.count Workbooks.openfilename:=foundfiles(i) Worksheets(1).printout Activeworkbook.closesavechanges:=false Next Else Magbox”沒有找到任何工作簿文件” End if End with Application.screenupdating=true End sub 單擊→運行子過程/用戶窗體→確定 Sub過程與程序流程控制語句 一,、sub過程 1,、 一個過程就是一組完成所需操作的VBA代碼的組合; 2,、 VBA的過程主要包括“sub過程”和“Function過程”兩種,; 3、 Sub過程不可以返回值,,Function過程可以返回值,。 二、聲明sub過程 1,、 錄制的“宏”就是一個簡單的sub過程,,使用錄制宏功能只能生成sub過程的代碼; 2,、 Sub過程的特點: (1) 以“sub過程名()”開頭,,以“End sub”結尾,; (2) Sub過程一般保存在模塊里; (3) 不返回運行結果,。 3,、 聲明sub過程語法形式: [public/private][static]sub過程名稱([參數(shù)1,參數(shù)2……]) 公共過程/私有過程,二選一 [語句塊] [Exit sub] [語句塊] End sub 打開VBA編輯器→右擊→插入→模塊→雙擊模塊→錄入: Sub mysub() Msgbox”這是我的第一個VBA過程” End sub →單擊運行子過程/用戶窗體→確定 不寫參數(shù)默認為公共過程 Private sub siyou() Msgbox”這是我的私有過程” End sub 4,、 同一個過程執(zhí)行另一個過程: (1) 輸入過程名稱以及參數(shù),,參數(shù)用逗號隔開; 過程名[參數(shù)1,參數(shù)2,……] Sub test() 'mysub siyou End sub 打開工具→宏→mysub→運行→確定 打開工具→宏→test→運行→確定 (2) 在過程名稱以及參數(shù)前使用call關鍵字,,參粗線條用括號括起來,并用逗號隔開,; Call過程名[(參數(shù)1,參數(shù)2,……)] Sub rest() 'mysub 'siyou’第一種方法 Call mysub Callsiyou End sub 打開→工具→宏→test→執(zhí)行宏→確定 5,、利用application對像的run方法: Application.run表示過程名的學符串(或字符串變量)[參數(shù)1,參數(shù)2,,……] Sub test() 'mysub 'siyou’第一種方法 'call mysub 'call siyou’第二種方法 Application.run “mysub” Dim a as string A = “siyou” Application.run a End sub 單擊→運行子過程/用戶窗體→確定 三,、判斷與循環(huán)語句: 順序結構判斷分之,循環(huán)語句 (一)IF語句 IF邏輯表達式樣 then 語句塊1 [else 語句塊2] 可選 End if 羅輯表達式值是否為真 ↓是 ↓否 語句塊 ↓ ↓ ↓ ↓ ← 比一比,,看誰算的又對又快,! 11+19=? 回答完畢 Sub出題()’生成新的題目 [d6].value = int(rnd * 20) [f6[.ralue = int(rnd * 20) End sub Sub dt() If[h6].value = [d6].value+[f6].value then '檢查是否答對 End if Call 出題 '調用過程,,得新生成題目 End sub 添加if[h6].value<>[d6],value+[f6].value then’檢查是否答對 Magbox”答錯了,,繼續(xù)努力!” End if Else 邏輯表達式值是否為真 是→語名塊1/不是→語句塊2 注釋前面語句→視圖→工具→編輯→設置注釋塊 If[h6].value = [d6].value + [f6].value the '檢查是否答對 Msgbox”答對了,,你真棒,!” Else Msgbox”答錯了,繼續(xù)努力,!” End if Call 出題 '調用過程,,重新生成題目 End sub If邏輯表達式1是否為真 then 語句1 [else if邏輯表達式2 then 語句2 [else if] 邏輯表達3 then 語句3 …… Else 語句塊n] End if 判斷H6單元格是否為空 Sub test() If [h6].value = “” then Msgbox”還沒有輸入答案!” Else if [h6].value = [d6].value + [f6].value then '檢查是否答對 Msgbox”答對了,,你真棒,!” Else Msgbox”答錯了,繼續(xù)努力,!” End if Call 出題 End sub 插入窗體控件,,命名為答題 IF使用兩次判斷 (二)Select case 語句(三種更多選擇項做選擇) Select case 測試表達式 Case 表達式列表1 語句塊1 Case 表達式列表2 語句塊2 Case 表達式列表3 語句塊3 …… Case 表達式列表n 語句塊 n [case else 語句塊 n + 1] End select 測試表達式必須為數(shù)值表達式或字符串表達式: 表達式列表可以是用逗事情分開的表達式,也可以使用to或is關鍵字,,如“ Case1,1,2,3,4 Case 1 to 4 Case is < 4 Case語句后面可以使用多重表達工,,各表達式的數(shù)據(jù)類型可以不相同,它們之間是邏輯或的關系如: Case 1 to 4 ,”a” '數(shù)值或文本 Sub sll() Select case[f6].value Case”” Msgvox”還沒有輸入答案” Case [d6].value + [f6].value Msgbox”答對了,,你真棒,!” Case else Msgbox”答錯了,,請繼續(xù)努力!” End select Call出題 Edn sub 插入窗體控件,,命名為答案 Sub 等sl級() Dim dj as string Select case [d3].value Case is >= 90 Dj = “A” Case is >= 80 Dj = “B” Case is >= 60 Dj = “C” Case is >= 200 Dj = “D” Case else Dj = “E” End select [e3].value = dj End sub (三)for循環(huán)語句 For-------next 循環(huán)語句 For循環(huán)變量 = 初值to 終值[step步長] 循環(huán)體 [next for] 循環(huán)體 Next[循環(huán)變量] []內為可選參數(shù) 初值小于終值,,步長大于1 循環(huán)變量初始化 ↓ 循環(huán)變量<=(>=)終值 ↓ Y ↓ 循環(huán)體 循環(huán)變量 = 循環(huán)變量 + 步長 循環(huán)語句結束 Sub sum 1 to 100() Dim mysum as long,I as integer For I = 1 to 100 step 1 Mysum = mysum + i Debug print i Next i Msgbox”1到100的自然數(shù)和是:”& mysum” End sub Sub 等級for() Dim dj as string,I as integer For I = 14 to 143 srep 1 Select case cells(I,”d”).value Case is >=90 Dj = “A” Case is >=80 Dj = “B” Case is >=60 Dj = “C” Case is >=20 Dj = “D” Case else Dj = “E” End select End sub (四)For each-------next循環(huán)語句 For each元素變量in對象集合 語句塊 [next for] 語句塊 Next[元素變量] Sub 等級 each() Dim dj as string, rng as range For each rng in range(“d14”:”d143”) Select case rng.value Case is >=90 Dj = “A” Case is >=80 Dj = “B” Case is >=60 Dj = “C” Case is >=20 Dj = “D” Case else Dj = “E” End select Rng.lffser(0,1).value = dj Next rng End sub (五)do while循環(huán)語句 1、開頭判斷循環(huán)語句條件 Do [wihle循環(huán)條件] 循環(huán)體 [next do] 循環(huán)體 Loop 2,、結尾判斷循環(huán)語句條件 Do 循環(huán)體 [next do] 循環(huán)體 Loop[wihle循環(huán)條件] 第二種比第一種多執(zhí)行一次循環(huán)部分的語句 開頭判斷循環(huán)語句流程圖 |
|
來自: Excel實用知識 > 《VBA與EXCEL》