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

如何在 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
結束子

智能表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 開發的商業和生產力應用程式。

點擊按鈕

點擊按鈕

ClickUp 是所有企業評價最高的生產力平台之一。Google、Booking.com、San Diego Padres 和 Uber 等大型企業都使用 ClickUp 來提高工作效率。

PDF-XChange 檢視器 2.5.322.10

PDF-XChange 檢視器 2.5.322.10

PDF 已成為閱讀、建立和傳送文字文件的常用格式。反過來,用於此類文件的程式數量也有所增加。PDF-XChange Viewer 是數量不斷增長的 PDF 檢視器之一。

阿帕契開放辦公室

阿帕契開放辦公室

Apache OpenOffice 提供了一整套可與 Microsoft 365 競爭的 Office 應用程序,尤其是 Excel、PowerPoint 和 Word。它允許您更有效地管理您的項目,並支援多種文件格式。

下載 iTaxviewer 1.8.7

下載 iTaxviewer 1.8.7

iTaxViewer軟體是當今最受歡迎的XML檔案讀取軟體。該軟體是用於讀取稅務總局 XML 格式電子報稅單的應用程式。

硝基 PDF 閱讀器

硝基 PDF 閱讀器

Nitro PDF Reader 是一款方便的 PDF 編輯器,涵蓋了大多數人每天使用 PDF 文件執行的所有基本任務。

福昕閱讀器12

福昕閱讀器12

Foxit Reader主要是一個PDF閱讀器,還允許您建立PDF文件、對其進行簽名、編輯以及添加註釋。它適用於作業系統,有 Microsoft Office 軟體包中各種程式的插件。