小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

 非範(fàn) 2018-04-20

在使用VBA表格出來程序的時候,最核心的邏輯有兩點,一是循環(huán),二是判斷語句。一般要么是循環(huán)里面嵌套判斷語句,要么就是判斷語句里面嵌套判斷語句。更復(fù)雜點的就是嵌套里面既有循環(huán)還有判斷。今天重點通過一個小小的例子,說明一下VBA中的常見的五種循環(huán)語句。

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

For ....next,

Do while ....loop,

Do ....loop until,

While... wend,

For each... in .. Next,

其中我最常用的是 For ....next ,Do while ....loop。

Do ....loop until,While... wend,這兩個基本上都可以被寫成 For ... Next, Do while ....loop的形式。

For each... in .. Next 主要是遍歷元素集合,比如數(shù)組,對象,文件什么。

初學(xué)者最好先掌握好For NextDo While ... loop,然后再學(xué)一下IF ... Then ..的判斷語句。就基本上可以應(yīng)對大部分EXCEL表格處理的問題了,至少模擬一下EXCEL自帶的公式是綽綽有余了。

今天通過解決一個小問題來學(xué)習(xí)一下這五種循環(huán)。

問題:通過編寫VBA匹配生產(chǎn)企業(yè)中的省市名稱。比如要提取A列“中山市花城食品飲料有限公司”中的地級市名稱“中山”兩字到B列中,如下圖:

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

  • 1、For…Next 循環(huán),

當(dāng)你知道你需要重復(fù)運行多少次某段語句時,可以使用For…Next語句。它的語法如下:

For 計數(shù)器 = 開始 To 結(jié)束 [步長]

語句1

語句2

語句N

Next [計數(shù)器]

比如計算2到100之間所有偶數(shù)之和,就可以這樣寫:

Sub 求和()

Dim Sum As Integer

For i = 2 To 100 Step 2

Sum = Sum + i

Next

MsgBox Sum

End Sub

將 i= 2 改為 i = 2,step 2改為 step 1(若步長為1 step 1 可以省略) 就是計算1加到100的和。

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

解決省市匹配的問題 如圖:

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

首先我們需要用for循環(huán)讀取要查找的企業(yè)名稱,A列從第2行到第33行:

Dim strName as Sring

for i = 2 to 33

strName = cells(i,1)

next

然后我們需要用for循環(huán)讀取被查找的廣東省的省市地址關(guān)鍵詞,C列從第2行到第23行:

Dim strAddr as Sring

for j =2 to 23

strAddr = cells(j,1)

next

再次我們需要在企業(yè)名稱里面(strName)查找廣東省的省市地址關(guān)鍵詞(strAddr),我們需要用到

Instr()這個函數(shù)。加上判斷語句是這樣的:

IF Instr(strName,strAddr) > 0 Then

Cells(i,2)=strAddr

End IF

最后我們將我們的代碼匯總下:

Sub 提取企業(yè)名稱省市()

For i = 2 To 33

strName = Cells(i, 1)

For j = 2 To 23

strAddr = Cells(j, 3)

If InStr(strName, strAddr) > 0 Then

Cells(i, 2) = strAddr

End If

Next

Next

End Sub

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

  • Do…While循環(huán)

如果不知道循環(huán)多少次,可以用Do ..while循環(huán) 只要或者直到某個條件為真,它們就會重復(fù)一系列的語句。語法如下:

Do While 條件

語句1

語句2

語句N

Loop

或者也可以寫成第二種寫法:

Do

語句1

語句2

語句N

Loop While 條件

第二種寫法循環(huán)體內(nèi)的代碼至少會運行一次。

比如剛才的計算2到100之間所有偶數(shù)之和,就可以這樣寫:

Sub 求和2()

Dim Sum As Integer

i =2

Do While i <>

Sum = Sum + i

Next

MsgBox Sum

End Sub

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

解決省市匹配的問題 ,思路是一樣的,只是用Do while 循環(huán)代替了For 循環(huán)。

首先我們需要用Do While循環(huán)讀取要查找的企業(yè)名稱,A列從第2行到第33行:

Dim strName as Sring

i = 2

Do While Cells(i, 1) <> ''

strName = Cells(i, 1)

i=i+1

Loop

然后我們需要用Do While循環(huán)讀取被查找的廣東省的省市地址關(guān)鍵詞,C列從第2行到第23行:

Dim strAddr as Sring

j = 2

Do while cells(j,3)<>''

strAddr = cells(j,3)

next

再次我們需要在企業(yè)名稱里面(strName)查找廣東省的省市地址關(guān)鍵詞(strAddr),我們需要用到

Instr()這個函數(shù)。加上判斷語句是這樣的:

IF Instr(strName,strAddr) > 0 Then

Cells(i,2)=strAddr

End IF

最后我們將我們的代碼匯總下:

Sub 提取企業(yè)名稱省市W()

i = 2

Do While Cells(i, 1) <> ''

strName = Cells(i, 1)

j = 2

Do While Cells(j, 3) <> ''

strAddr = Cells(j, 3)

If InStr(strName, strAddr) > 0 Then

Cells(i, 2) = strAddr

End If

j = j + 1

Loop

i = i + 1

Loop

End Sub

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

  • Do ...Loop Until循環(huán)

可以解釋為不滿足 Until的條件時,執(zhí)行循環(huán)體內(nèi)的語句:

Do Until 條件

語句1

語句2

語句N

Loop

也可以講 Until放在后面,這樣循環(huán)體內(nèi)的語句至少執(zhí)行一次:

Do Until 條件

語句1

語句2

語句N

Loop

計算2到100之間所有偶數(shù)之和,就可以這樣寫:

Sub 求和3()

i = 2

Dim Sum As Integer

Do Until i > 100

Sum = Sum + i

i = i + 2

Loop

MsgBox Sum

End Sub

解決省市匹配的問題,代碼如下:

Sub 提取企業(yè)名稱省市D()

i = 2

Do Until Cells(i, 1) = ''

strName = Cells(i, 1)

j = 2

Do Until Cells(j, 3) = ''

strAddr = Cells(j, 3)

If InStr(strName, strAddr) > 0 Then

Cells(i, 2) = strAddr

End If

j = j + 1

Loop

i = i + 1

Loop

End Sub

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

  • While Wend循環(huán)

While…Wend循環(huán)功能上和Do…While循環(huán)一樣,它是從Microsoft Basic的早期版本遺留下來的并

且VBA保留它也是為了支持兼容性。該循環(huán)以關(guān)鍵字While開始以關(guān)鍵字Wend結(jié)束。這是它的語法:

While 條件

語句1

語句2

語句N

Wend

條件在循環(huán)的上面就被測試,只要提供的條件為真,這些語句就會被執(zhí)行。一旦條件為假,VB就將

退出該循環(huán)。

計算2到100之間所有偶數(shù)之和,就可以這樣寫:

Sub 求和4()

i = 2

Dim Sum As Integer

While i<=>

Sum = Sum + i

i = i + 2

Wend

MsgBox Sum

End Sub

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

  • For Each…Next 循環(huán)

當(dāng)你的過程需要在一個集合的所有對象或者一個數(shù)組的所有元素(數(shù)組將在第七章里涉及)之間循

環(huán)時,應(yīng)該使用For Each…Next循環(huán)。該循環(huán)不需要計數(shù)器變量,VB自己知道應(yīng)該執(zhí)行幾次循環(huán)。

該循環(huán)的形式是:

For Each 元素 In 組合

語句1

語句2

語句N

Next [元素]

比如簡單的求和計算:

Sub 求和5()

Dim Num() As Variant

Num = Array(1, 2, 3, 4, 5)

Dim Sum As Integer

For Each N In Num

Sum = Sum + N

Next

MsgBox Sum

End Sub

其中Num 為數(shù)組,For Each N In Num 時讀取數(shù)組里的每一個數(shù)值,然后執(zhí)行循環(huán)體內(nèi)的語句。

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

EXCEL VBA 零基礎(chǔ)教程:最全的循環(huán)語句(辦公室 職場必備 )

明顯可以看出For Next 循環(huán)要比其他Do while Loop 或 While Wend 代碼要簡潔一些,但需要提前知道循環(huán)的起點和終點。Do while Loop 或 While Wend用好的關(guān)鍵需要控制好循環(huán)的入口和出口,避免進入死循環(huán)。Do While Loop,Do Until Loop 和 While Wend 從對比圖中可以看出循環(huán)控制流程基本一致。

注1:Instr 用法:InStr([start,]string1,string2[,compare])

參數(shù)說明

  • Start - 一個可選參數(shù)。指定搜索的起始位置。搜索從第一個位置開始,從左到右。

  • String1 - 必需的參數(shù)。要搜索的字符串。

  • String2 - 必需的參數(shù)。要在String1中搜索的字符串。

  • Compare - 一個可選參數(shù)。指定要使用的字符串比較。它可以采取以下提到的值:

  • 0 = vbBinaryCompare - 執(zhí)行二進制比較(默認)

  • 1 = vbTextCompare - 執(zhí)行文本比較

注2: Cells用法: Cells(i,j)中i指的是行數(shù),j指的是列數(shù),Cells(i,j)指的是第i行的第j列單元格。Cells(3,4)代表第3行D列的內(nèi)容。


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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多