50.常用語(yǔ)句透析_第1頁(yè)
50.常用語(yǔ)句透析_第2頁(yè)
50.常用語(yǔ)句透析_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、【VBA 教材】 50. 常用語(yǔ)句透析(二十四)貢獻(xiàn)者: 羅剛君日期: 2009-12-01 閱讀: 1320相關(guān)標(biāo)簽: pub2007VBAWith 語(yǔ)句在前面的章節(jié)中已經(jīng)多次提到,本節(jié)開始對(duì)With 語(yǔ)句的用途、語(yǔ)法及常見錯(cuò)誤進(jìn)行分析。With 語(yǔ)可以在一個(gè)單一對(duì)象或一個(gè)用戶定義類型上執(zhí)行一系列的語(yǔ)句。它的主要作用是簡(jiǎn)化代碼、提升執(zhí)行速度及減少變量的使用。1. 簡(jiǎn)化代碼例如某個(gè)對(duì)象在一個(gè)過(guò)程需要多次調(diào)用,那么With 語(yǔ)句可以在編寫代碼時(shí)只寫一次,卻可以達(dá)成多次效用的效果。這對(duì)于代碼的簡(jiǎn)化有很大的作用。例如對(duì)單元格添加數(shù)據(jù)有效性,不用With 語(yǔ)句的代碼如下:_Sub 對(duì) B1 設(shè)置數(shù)據(jù)有

2、效性1()Worksheets(生產(chǎn)表 ).B1.Validation.DeleteWorksheets(生產(chǎn)表 ).B1.Validation.Add Type:=xlValidateList, Formula1:=$A$1:$A$8Worksheets(生產(chǎn)表 ).B1.Validation.IgnoreBlank = trueWorksheets(生產(chǎn)表 ).B1.Validation.InCellDropdown = trueWorksheets(生產(chǎn)表 ).B1.Validation.InputTitle = 提示 Worksheets(生產(chǎn)表 ).B1.Validation.Inp

3、utMessage = 數(shù)據(jù)來(lái)源是A1:A8Worksheets(生產(chǎn)表 ).B1.Validation.ShowInput = trueWorksheets(生產(chǎn)表 ).B1.Validation.ShowError = trueEnd Sub_編輯版 word上面代碼比較容易閱讀,然而寫法過(guò)于臃腫。用With 語(yǔ)句簡(jiǎn)化后代碼如下:Sub 對(duì) B1 設(shè)置數(shù)據(jù)有效性2()With Worksheets(生產(chǎn)表 ).B1.Validation.Delete.Add Type:=xlValidateList, Formula1:=$A$1:$A$8.IgnoreBlank = true.InCel

4、lDropdown = true.InputTitle = 提示 .InputMessage = 數(shù)據(jù)來(lái)源是 A1:A8.ShowInput = true.ShowError = trueEnd WithEnd Sub_很顯然 With 語(yǔ)句在簡(jiǎn)化代碼中有著不可小覷的貢獻(xiàn)。2. 提升速度仍然以上面的兩段代碼為例,稍加修改,進(jìn)行比較,可以證實(shí)With 語(yǔ)句對(duì)循環(huán)語(yǔ)句可以大大提速。_Sub 對(duì) B1 設(shè)置數(shù)據(jù)有效性1()Dim tim As Longtim = Timer編輯版 wordFor i = 1 To 1000Worksheets(生產(chǎn)表 ).B1.Validation.DeleteWo

5、rksheets(生產(chǎn)表 ).B1.Validation.Add Type:=xlValidateList, Formula1: =$A$1:$A$8Worksheets(生產(chǎn)表 ).B1.Validation.IgnoreBlank = trueWorksheets(生產(chǎn)表 ).B1.Validation.InCellDropdown = trueWorksheets(生產(chǎn)表 ).B1.Validation.InputTitle = 提示 Worksheets(生產(chǎn)表 ).B1.Validation.InputMessage = 數(shù)據(jù)來(lái)源是A1:A8Worksheets(生產(chǎn)表 ).B1.V

6、alidation.ShowInput = trueWorksheets(生產(chǎn)表 ).B1.Validation.ShowError = trueNext iMsgBox Format(Timer - tim, 0.00) & 秒End Sub_Sub 對(duì) B1 設(shè)置數(shù)據(jù)有效性2()Dim tim As Longtim = TimerFor i = 1 To 1000With Worksheets(生產(chǎn)表 ).B1.Validation.Delete.Add Type:=xlValidateList, Formula1:=$A$1:$A$8.IgnoreBlank = true.InCellD

7、ropdown = true.InputTitle = 提示 編輯版 word.InputMessage = 數(shù)據(jù)來(lái)源是 A1:A8.ShowInput = true.ShowError = trueEnd WithNext iMsgBox Format(Timer - tim, 0.00) & 秒End Sub_兩段都是對(duì) B1 單元格添加有效性設(shè)置,為了更容易看出區(qū)別,將程序循環(huán)執(zhí)行1000次。分別執(zhí)行以上兩段代碼,它們最后所報(bào)告的執(zhí)行時(shí)間會(huì)差異兩倍左右。3. 減少變量有一種特殊的對(duì)象,無(wú)法多次引用。如果第二次調(diào)用它,那么將產(chǎn)生不同的對(duì)象,而不是第一次引用的對(duì)象。這主要在新建一個(gè)對(duì)象時(shí)會(huì)涉

8、及。通常解決這個(gè)問題是采用變量來(lái)取代它,那么以后調(diào)用這個(gè)變量即可。但程序中變量太多會(huì)對(duì)程序的執(zhí)行效率產(chǎn)生副作用。那么剩下的方案就是使用With 語(yǔ)句了。例如在工作簿中建立一個(gè)新工作表,并進(jìn)行命名、移動(dòng)處理。使用變量的處理方式是:_Sub 建立總表且移至最后 ()Dim sht As Worksheet聲明一個(gè)工作表對(duì)象Set sht = Worksheets.Add將新表賦予與變量sht.Name = 總表 設(shè)置新表的名稱sht.Move after:=Sheets(Sheets.Count)移動(dòng)新表編輯版 wordEnd Sub_對(duì)于“Worksheets.Add”這類新建對(duì)象,是不能多次引

9、用的,如果直接對(duì)對(duì)象賦值,那么每個(gè)賦值都會(huì)產(chǎn)生一個(gè)新的對(duì)象。例如下面代碼:_Sub 建立總表且移至最后2()Worksheets.Add.Name = 總表 設(shè)置新表的名稱Worksheets.Add.Move after:=Sheets(Sheets.Count)移動(dòng)新表End Sub_該過(guò)程中兩次“Worksheets.Add”代表了兩個(gè)對(duì)象,會(huì)產(chǎn)生兩個(gè)新工作表。如果改用 With 語(yǔ)句則可以完美地處理以上所提到的兩個(gè)問題。With 語(yǔ)句如下:Sub 建立總表且移至最后3()With Worksheets.Add創(chuàng)建一個(gè)工作表對(duì)象,后續(xù)可以多次調(diào)用這個(gè)對(duì)象.Name = 總表 設(shè)置 With 對(duì)象的名稱.Move

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論