一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

7 在VBA中重復(fù)操作 VB的Do…While循環(huán)語句

 滿泉ca85upjdlw 2018-03-31

VB有兩種Do循環(huán)語句,只要或者直到某個條件為真,它們就會重復(fù)一系列的語句。只要條件為真,Do…While循環(huán)就允許你重復(fù)某個操作。這個循環(huán)的語法如下:

Do While 條件語句1語句2語句NLoop

當(dāng)VB遇到這個循環(huán)時,它首先條件的真假,如果條件為假,循環(huán)內(nèi)部的語句就不會被執(zhí)行,VB將繼續(xù)執(zhí)行關(guān)鍵字Loop后面的第一條語句。如果條件為真,循環(huán)里面的語句則會被一條一條地執(zhí)行,直到遇到Loop語句。Loop語句告訴VB重復(fù)這個過程,只要Do While語句里的條件為真的話。

7 在VBA中重復(fù)操作 VB的Do…While循環(huán)語句

0

現(xiàn)在,我們來看看如何在Excel里面好好利用Do…While循環(huán)語句。在前面的章節(jié)里,你學(xué)習(xí)了如何根據(jù)一個單元格的內(nèi)容來作決定。讓我們再進(jìn)一步,看看如何在一系列單元格上作同樣的決定。該決定是給一列中的非空單元格設(shè)置粗體格式。

1.打開一個空工作簿,并且命名為Chap06.xls

2.切換到VB編輯屏幕,并且將新工程改名為Repetition (Chap06.xls)

3.在工程Repetition里插入一新模塊,并重命名為DoLoops

4. 輸入如下過程:

Sub ApplyBold()Do While ActiveCell.Value <>''ActiveCell.Font.Bold = TrueActiveCell.Offset(1, 0).SelectLoopEnd Sub

5. 在單元格A1:A7里輸入任意數(shù)據(jù)(文本或數(shù)字)

6. 選擇單元格A1

7. 選擇“工具”-“宏”-“運行宏”。在宏對話框里,雙擊過程ApplyBold(或者選中該過程然后點擊運行)

當(dāng)運行過程ApplyBold時,VB首先評估Do While語句里的條件——ActiveCell.Value<>””,該條件意思是:只要當(dāng)前單元格的值不是一個空字符串(””),就執(zhí)行下列語句。因為你已經(jīng)在單元格A1里輸入了數(shù)據(jù)并且激活了該單元格(見第六步),第一個測試返回真,所以VB執(zhí)行語句ActiveCell.Font.Bold = True,它的意思是給當(dāng)前單元格設(shè)置粗體格式。接下來,VB選擇了下一行的單元格(參見第二章里的Offset屬性)。因為該語句之后就是關(guān)鍵字Loop,VB返回到Do While語句,并且再次檢查條件。如果新選中的單元格(當(dāng)前激活的單元格)不為空,那么VB就會重復(fù)循環(huán)內(nèi)部的語句。該過程會繼續(xù),直到檢查到單元格A8的內(nèi)容為空,測試條件的結(jié)果為假,因此,VB就跳過循環(huán)內(nèi)部的語句。并且在關(guān)鍵字Loop后面沒有其它的語句了,所以該過程就結(jié)束了。

7 在VBA中重復(fù)操作 VB的Do…While循環(huán)語句

1

我們來看看另外一個Do…While循環(huán)的例子。是不是很想知道如何在Excel的狀態(tài)欄里顯示今天的日期和時間?這里有個例子,如何讓它顯示十秒鐘:

Sub TenSeconds()Dim stopmestopme = Now + TimeValue('00:00:10')Do While Now < stopmeapplication.displaystatusbar="TrueApplication.StatusBar" =="" nowloopapplication.statusbar="FalseEnd">

在上面的程序里,只要函數(shù)Now返回的時間小于變量stopme的值,Do…While循環(huán)里的語句就會被執(zhí)行。變量stopme儲存值為當(dāng)前時間加上十秒(參見在線幫助里的另外一個使用內(nèi)置函數(shù)TimeValue的例子)。

語句Application.DisplayStatusBar告訴VB打開狀態(tài)欄的顯示,下條語句則是將當(dāng)前日期和時間放在狀態(tài)欄上。當(dāng)顯示時間時(只顯示10秒)用戶無法使用系統(tǒng)(光標(biāo)變成了沙漏)。十秒鐘后(也就是,當(dāng)條件Now <>

技巧:什么是循環(huán)?

循環(huán)是一種導(dǎo)致一部分程序代碼重復(fù)執(zhí)行的編程結(jié)構(gòu)。VBA提供了多種結(jié)構(gòu)在你的過程里執(zhí)行循環(huán):

Do…While, Do…Until, For…Next, For…Each, and While…Wend

Do…While循環(huán)還有另外一種語法,你可以在循環(huán)的底部測試條件,例如:

Do語句1語句2語句NLoop While 條件

當(dāng)你在循環(huán)的底部測試條件時,意味著循環(huán)里面的語句至少運行了一次??匆幌逻@個例子:

Sub SignIn()Dim secretCode As StringDo secretCode = InputBox('Enter your secret code:')If secretCode = 'sp1045' Then Exit DoLoop While secretCode <> 'sp1045'End Sub

注意,在條件被測試之時,VB至少已經(jīng)執(zhí)行了一次循環(huán)里的語句。除了將條件放在循環(huán)之后外,過程SignIn示范如何使用條件跳出循環(huán)。當(dāng)Exit Do語句執(zhí)行時,循環(huán)便立即停止。

技巧:避免無限循環(huán)

如果你沒有正確地設(shè)計你的循環(huán),你將導(dǎo)致一無限循環(huán)——永無休止的循環(huán)。你將無法使用Esc鍵來停止該循環(huán)。在下面的過程里,因為用戶忘了放置測試條件而導(dǎo)致了永無休止的循環(huán):

Sub SayHello()DoMsgBox 'Hello.'LoopEnd Sub

你必須按下Ctrl+Break鍵(現(xiàn)在,有些電腦使用別的組合鍵來中斷程序。例如手提電腦有的就是Fn+Break)才能終止該無限循環(huán),當(dāng)VB顯示信息“代碼執(zhí)行被中斷”時,點擊結(jié)束以退出過程。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产午夜福利片在线观看| 国产原创中文av在线播放| 国产成人精品综合久久久看| 国产级别精品一区二区视频| 国产欧美日韩不卡在线视频| 国产又粗又猛又长又大| 国内自拍偷拍福利视频| 国产午夜精品久久福利| 视频一区二区黄色线观看| 嫩草国产福利视频一区二区| 六月丁香六月综合缴情| 国产欧美日韩综合精品二区| 国产成人精品在线播放| 日韩一区二区三区四区乱码视频| 日韩精品视频香蕉视频| 国产高清一区二区不卡| 国产级别精品一区二区视频 | 视频在线播放你懂的一区| 成人精品视频一区二区在线观看| 免费一区二区三区少妇| 亚洲熟女乱色一区二区三区| 大香蕉网国产在线观看av| 日韩特级黄色大片在线观看| 五月综合激情婷婷丁香| 国产又粗又猛又长又大| 亚洲人午夜精品射精日韩| 午夜国产精品国自产拍av| 中文字幕乱码一区二区三区四区 | 国产精品一区二区视频大全| 精品人妻精品一区二区三区| 国产一区二区精品丝袜 | 日韩欧美精品一区二区三区| 中文字幕五月婷婷免费| 免费一区二区三区少妇| 欧美一区二区不卡专区| 欧洲自拍偷拍一区二区| 亚洲天堂男人在线观看| 91日韩欧美中文字幕| 国产精品一区二区视频成人| 中文文精品字幕一区二区| 日韩无套内射免费精品|