如何在 Excel 2016 VBA 中使用 For-Next 循環

Excel VBA 編程中最簡單的循環類型是 For-Next 循環。循環由計數器變量控制,該變量從一個值開始並在另一個值處停止。For 語句和 Next 語句之間的語句是在循環中重複的語句。

For-Next 示例

以下示例使用 For-Next 循環對前 1,000 個正數求和。Total 變量從零開始。然後循環發生。變量 Cnt 是循環計數器。它從 1 開始,每次通過循環增加 1。當 Cnt 為 1,000 時,循環結束。

這個例子在循環中只有一個語句。此語句將 Cnt 的值添加到 Total 變量。當循環結束時,一個 MsgBox 顯示數字的總和。

子 AddNumbers()
  Dim Total As Double
  將 Cnt 調暗至長
  總計 = 0
  對於 Cnt = 1 到 1000
    總計 = 總計 + Cnt
  下一個
  消息框總計
結束子

因為循環計數器是一個普通變量,所以您可以編寫代碼以在 For 和 Next 語句之間的代碼塊內更改其值。然而,這是一種非常糟糕的做法。

帶有步驟的 For-Next 示例

您可以使用 Step 值跳過 For-Next 循環中的某些計數器值。這是前面的示例,重寫為僅對 1 到 1,000 之間的奇數求和:

子 AddOddNumbers()
  Dim Total As Double
  將 Cnt 調暗至長
  總計 = 0
  對於 Cnt = 1 到 1000 步驟 2
    總計 = 總計 + Cnt
  下一個
  消息框總計
結束子

這一次,Cnt 從 1 開始,然後取值為 3、5、7 等。Step 值決定了計數器如何遞增。請注意,實際上並未使用上循環值 (1000),因為 Cnt 的最高值將是 999。

這是另一個使用 Step 值 3 的示例。此過程適用於活動工作表,並將淺灰色陰影應用於每第三行,從第 1 行到第 100 行。

子 ShadeEveryThirdRow()
  昏暗的我
  對於 i = 1 到 100 步驟 3
    Rows(i).Interior.Color = RGB(200, 200, 200)
  接下來我
結束子

查看運行此宏的結果。

如何在 Excel 2016 VBA 中使用 For-Next 循環

使用循環將背景陰影應用於行。

帶有 Exit For 語句的 For-Next 示例

For-Next 循環還可以在循環中包含一個或多個 Exit For 語句。當 VBA 遇到這個語句時,循環立即終止。

下面的示例演示 Exit For 語句。此例程是一個 Function 過程,旨在用於工作表公式。該函數接受一個參數(一個名為 Str 的變量)並返回第一個數字左邊的字符。例如,如果參數是“KBR98Z”,則函數返回“KBR”。

函數 TextPart(Str)
  昏暗的我
  文本部分 = ““
  對於 i = 1 到 Len(Str)
    If IsNumeric(Mid(Str, i, 1)) 然後
      退出
    別的
      TextPart = TextPart & Mid(Str, i, 1)
    萬一
  接下來我
結束函數

For-Next 循環從 1 開始,以表示字符串中字符數的數字結束。該代碼使用 VBA 的 Mid 函數來提取循環中的單個字符。如果找到數字字符,則執行 Exit For 語句,並且循環提前結束。

如果字符不是數字,則將其附加到返回值(與函數名稱相同)。循環檢查每個字符的唯一時間是作為參數傳遞的字符串是否不包含數字字符。

嵌套的 For-Next 示例

您可以在循環中包含任意數量的語句,並在其他 For-Next 循環中嵌套 For-Next 循環。

下面的示例使用嵌套的 For-Next 循環將隨機數插入到 12 行 x 5 列的單元格區域中。請注意,對於外循環(帶有 Col 計數器的循環)的每次迭代,例程都會執行一次內循環(帶有 Row 計數器的循環)。換句話說,該例程執行 Cells(Row, Col) = Rnd 語句 60 次。

如何在 Excel 2016 VBA 中使用 For-Next 循環

這些單元格使用嵌套的 For-Next 循環填充。

子填充範圍()
  Dim Col As Long
  昏暗的行一樣長
  對於 Col = 1 到 5
    對於行 = 1 到 12
      單元格(行,列)= Rnd
    下一行
  下一欄
結束子

下一個示例使用嵌套的 For-Next 循環初始化值為 100 的三維數組。 該例程執行所有循環(賦值語句)中間的語句 1,000 次(10 * 10 * 10),每次使用不同的 i、j 和 k 值組合:

子 NestedLoops()
  Dim MyArray(10, 10, 10)
  昏暗的我
  昏暗如長
  Dim k As Long
  對於 i = 1 到 10
    對於 j = 1 到 10
      對於 k = 1 到 10
        MyArray(i, j, k) = 100
    下一個
  下一個
接下來我
  ' 其他語句在這裡
結束子

這是使用嵌套 For-Next 循環的最後一個示例,其值為 Step。此過程通過更改交替單元格的背景顏色來創建棋盤格。

如何在 Excel 2016 VBA 中使用 For-Next 循環

使用循環創建棋盤圖案。

Row 計數器從 1 到 8 循環。If-Then 構造確定要使用哪個嵌套的 For-Next 結構。對於奇數行,Col 計數器從 2 開始。對於偶數行,Col 計數器從 1 開始。兩個循環都使用 Step 值 2,因此交替單元格受到影響。兩個額外的語句使單元格成為正方形(就像一個真正的棋盤格)。

子 MakeCheckerboard()
  調暗 R 一樣長,C 一樣長
  對於 R = 1 到 8
    如果 WorksheetFunction.IsOdd(R) 那麼
     對於 C = 2 到 8 步驟 2
       細胞(R,C)。內部。顏色= 255
     下一個 C
    別的
     對於 C = 1 到 8 步驟 2
       細胞(R,C)。內部。顏色= 255
     下一個 C
    萬一
  下一個
  行(“1:8”)。行高度 = 35
  列(“A:H”)。列寬 = 6.5
結束子

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。