首先歡迎各位朋友來到我這個平臺,分享成果,福不唐捐,總會有所收穫。無論是EXCEL的操作,還是VBA的操作,都會對大家有所幫助。在每日的講解過程中,對大家哪怕是一點點的收穫,我的時間也就是有意義的。
今日給大家講VBA的循環語句,這個是非常基礎的知識,在VBA的相關內容中我也一直在用,也在不斷的講解,今日專門作為一個專題給大家詳細的說明,中間也有一些有意思的小例子,供大家玩耍。
一 FOR NEXT語句 這種循環是以指定的次數,來重複執行的一組語句
這個結構一般是這樣的:
for counter= start to end [ step 步長值]
[statements]
[exit for]
[statements]
Next counter
具體解釋一下,初始值指的是循環開始的值,結束值指的是循環結束的值,實質上就是counter值的一個判斷,如果counter值在起始值和結束值之間,那麼進入循環語句,然後counter值每運行到next語句後會自動加一個步長值,直至counter值超出了初始值到結束值這個範圍,循環才會結束。這裡要說明一下」step 步長值「往往是省略掉的,省略掉的話,步長取默認值為1。下面將以一段小實例來具體說明這個結構的用法:
實例:在sheet1工作表中一次輸出1到100這些數,顯示在第一列中。
程序:
Sub kk()
Sheets(「sheet1」).select
Dim i As Integer
For i = 1 To 100
Cells(i, 1) = i
Next
End Sub
二 For each …NEXT語句 這種循環主要功能是對一個數組或一個對象進行操作,讓所用元素執行一次循環語句
For each element in group
[statements]
[exit for]
[statements]
Nexr element
具體解釋一下,在for next循環中主要是數值變量,而for each …NEXT這種結構是對象變量。什麼意思呢?each……in指的是在這個對象集合裡面,一次將每一個對象都遍歷一邊。同樣的道理,執行到next後對象自動指到下一個。具體我們來看一下下面的一個實例.
實例:給一個數據區域a1:d5內的所有單元格隨機賦值。
分析:顯然數據區域就是一個對象集合,單元格就是這個集合裡面的對象
程序:
Sub JJ()
Sheets("SHeet1").Select
Dim i As Integer
For Each c In Range("a1:d5")
c.Value = Rnd
Next
End Sub
三 DO loop 語句 在條件為true時,重複執行命令區域
DO WHILE CONDITION
[statements]
[exit do]
[statements]
LOOP
或者:
DO
[statements]
[exit do]
[statements]
LOOP WHILE CONDITION
備註:上面的while 可以用until 代替。
VBA中如果事先不知道將重複多少次循環,只是知道判斷的條件,那麼使用 Do...Loop 語句。Do...Loop 語句會重複執行某段代碼直到條件是 true 或條件變成 true。重複執行代碼的條件是 true,或者使用 While 關鍵字來檢查 Do... Loop 語句的條件。
舉例:我們用Do While語句來解決求1—100的自然數的和的問題:
Sub my_sum()
Dim Lsum As Long, i As Long
i = 1
Do While i <= 100
Lsum = Lsum + i
i = i + 1
Loop
MsgBox "1到100的自然數和為:" & Lsum
End Sub
好了,到這裡把三個循環體都做了講解,上面也講到了三個實例,截圖如下,我都做了測試,可以使用。
今日內容回向:
1 VBA 中三種循環體是什麼?
2 三種循環的區別和聯繫是什麼?
3 如果不知將循環多少次?用哪個循環體?
4 試著把第一個例子改成第三個的模式。