今天,我們來學習下vba**鏡率不亞於if語句的,for迴圈語句。
掌握了這兩種語句,可以搞定90%的基本功能。
組合起來使用,更是其樂無窮!
接下來,我們將學習for迴圈語句的兩種基本結構。
主要分為:①for ....next迴圈結構, ② for each ....next 迴圈結構。
01 for....next迴圈結構
首先,我們來了解下for ....next迴圈結構。
它的主要過程是,我們先設定乙個範圍,在這個範圍中,系統會不斷重複執行我們設計的乙個或幾個步驟,輸出結果。
當不在範圍內時,這些步驟不會被執行。
打個比方,我們要炒蛋,炒幾個蛋,放什麼調料,什麼時候翻面,什麼時候放調料,我們都預先設定好了,我們需要期待的,就是會炒出什麼樣的蛋。
for next 結構的**格式如下:
for i=初始值 to 結束值 step 步長
操作1操作2
next
接下來,我們舉個例子來說明上面**的意思。
例如:滷蛋是個投資小白,他聽從滷飛師兄的建議,每個月固定投資1500塊錢,投資一年,假定每個月的收益是本金的0.8%。這個時候,初始值就是1月份,結束值就是12月份,步長就是1個月。這3個值確定了迴圈的次數。
然後,操作1就是每個月投資1500塊錢。操作1,操作2,……操作n,就是我們讓系統重複執行的步驟。當時間變為明年1月份時,已經不在我們約定的範圍內(今年1月-今年12月),設定的操作也就不會再執行了。
對應的vba**,核心就是:
for i = 1 to 12 (step 1)
滷蛋這個月所有的錢=滷蛋上個月所有的錢 * (1+收益率) +1500
next(步長為1時,step 1 可以省略)
當投資金額達到1萬塊的時候,滷蛋發現自己很有錢了,決定不繼續投資了。對應的vba**如下:
for i = 1 to 12
if 投資金額》10000 then
exit for '跳出迴圈
else
滷蛋這個月所有的錢=滷蛋上個月所有的錢 * (1+收益率) +1500
投資金額= 截止上月累計投資金額+1500
end if
next
02 for each....next迴圈結構
接下來,我們來了解下for each ....next迴圈結構。
它和for....next結構相似,唯一的區別在於,加上了each,each後面會有乙個物件,比如range,workbook等。
關於的物件的說明,可以檢視下面這篇文章。資料大作手:寫vba**前你所需要掌握的概念(上)zhuanlan.zhihu.com
for each ....next結構的**格式如下:
for each 物件變數 in 集合 操作1
操作2 ......
next
例如:在a1:d6這一區域,每個單元格輸入乙個隨機值,將所有的值求和,判斷是不是偶數。
for each i in range("a1:c6")
i.value = int(rnd() * 100) + 1
sum_range = i.value + sum_range
next
在這裡,物件變數就是i,也就是某乙個單元格。
集合,就是a1:d6這一區域。
完整版**如下:
sub 判斷偶數()
dim sum_range as integer
sum_range = 0 '定義單元格求和的初始值為0
for each i in range("a1:c6") '在符合a1:c6 範圍內的條件時做迴圈
i.value = int(rnd() * 100) + 1 '隨機生成1-100的整數值
sum_range = i.value + sum_range '將單元格的值求和
next
if sum_range mod 2 = 0 then '判斷是不是偶數
msgbox "這些單元格的求的值是" & sum_range & "是偶數哦"
else
msgbox "這些單元格的求的值是" & sum_range & "不是偶數哦"
end if
end sub
vba 跳出for迴圈 VBA的基本語句
塊 的形式的vba語句比完整一行的 功能和適用性方面更強。二選一 if 條件表示式 then 條件表示式返回true時要執行的操作和計算 else 條件表示式返回false時要執行的操作和計算 end if 多選一 if 條件表示式 then 條件表示式返回true時要執行的操作和計算 elseif...
VBA 中的各種迴圈
利用迴圈和分支語句判斷 b 列數字的符號,將結果填入 c列。原始 如如下 1 for 迴圈和 if 語句,如下 sub sign dim sign as string,i as integer 宣告變數 for i 3 to13 step 1if cells i,b 0 then sign 負數 e...
vba遍歷字串 迴圈遍歷VBA中的指定工作表
您在問題中顯示的 因以下原因而失敗 assets array pipe mat tables pipe diam tables pipe length tables assets是一種工作表,它是一種object,在為物件賦值時必須使用set set assets array pipe mat ta...