/ / VBA VBA Excel

Excel VBA Loop

ห่วงเดี่ยว | Double Loop | Triple Loop | ทำในขณะที่ Loop

วนลูปเป็นหนึ่งในเทคนิคการเขียนโปรแกรมที่มีประสิทธิภาพมากที่สุด ห่วง ใน Excel VBA ช่วยให้คุณสามารถวนรอบช่วงของเซลล์ที่มีเพียงไม่กี่สายรหัส

ห่วงเดี่ยว

คุณสามารถใช้ลูปเดียวเพื่อวนรอบช่วงหนึ่งมิติของเซลล์

วางปุ่มคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Dim i As Integer

For i = 1 To 6
    Cells(i, 1).Value = 100
Next i

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

ห่วงเดี่ยวใน Excel VBA

คำอธิบาย: สายรหัสระหว่าง For และ Next จะดำเนินการหกครั้ง สำหรับ i = 1 Excel VBA จะใส่ค่า 100 ลงในเซลล์ที่จุดตัดของแถว 1 และคอลัมน์ 1 เมื่อ Excel VBA ถึง Next i จะเพิ่ม i ด้วย 1 และจะข้ามกลับไปที่คำสั่ง For สำหรับ i = 2 Excel VBA จะใส่ค่า 100 ลงในเซลล์ตรงจุดตัดของแถว 2 และคอลัมน์ 1 ฯลฯ

หมายเหตุ: เป็นการดีที่จะเยื้องไว้เสมอ (แท็บ) โค้ดระหว่างคำว่า For และ Next ทำให้รหัสของคุณอ่านง่ายขึ้น

Double Loop

คุณสามารถใช้ลูปคู่เพื่อวนรอบช่วงสองมิติของเซลล์

วางปุ่มคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Dim i As Integer, j As Integer

For i = 1 To 6
    For j = 1 To 2
        Cells(i, j).Value = 100
    Next j
Next i

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

Double Loop ใน Excel VBA

คำอธิบาย: สำหรับ i = 1 และ j = 1 Excel VBA จะใส่ค่า 100 ลงในเซลล์ที่จุดตัดของแถว 1 และคอลัมน์ 1 เมื่อ Excel VBA ถึง Next j จะเพิ่ม j พร้อมด้วย 1 และกระโดดกลับไปที่คำสั่ง For j สำหรับ i = 1 และ j = 2 Excel VBA ป้อนค่า 100 ลงในเซลล์ที่จุดตัดของแถว 1 และคอลัมน์ 2 ถัดไป Excel VBA ละเว้น j ถัดไปเนื่องจาก j ทำงานเฉพาะจาก 1 ถึง 2 เมื่อ Excel VBA ถึง Next i จะเพิ่ม i กับ 1 และจะกระโดดกลับไปที่คำสั่ง For i สำหรับ i = 2 และ j = 1 Excel VBA จะใส่ค่า 100 ลงในเซลล์ตรงจุดตัดของแถว 2 และคอลัมน์ 1 ฯลฯ

Triple Loop

คุณสามารถใช้ลูปทริปเปิลสามลูปผ่านช่วงสองมิติในแผ่นงาน Excel หลายแผ่น

วางปุ่มคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Dim c As Integer, i As Integer, j As Integer

For c = 1 To 3
    For i = 1 To 6
        For j = 1 To 2
            Worksheets(c).Cells(i, j).Value = 100
        Next j
    Next i
Next c

คำอธิบาย: การเปลี่ยนแปลงเพียงอย่างเดียวที่ทำขึ้นเมื่อเทียบกับโค้ดสำหรับลูปคู่คือเราได้เพิ่มลูปเพิ่มอีกหนึ่งชุดและเพิ่มเวิร์กชีท (c) หน้าเซลล์เพื่อให้ได้ช่วงสองมิติในแผ่นงานแรกสำหรับ c = 1 แผ่นงานที่สองสำหรับ c = 2 และแผ่นงานที่สามสำหรับ c = 3 ให้ดาวน์โหลดไฟล์ Excel เพื่อดูผลลัพธ์นี้

ทำในขณะที่ Loop

นอกจากวงสำหรับถัดไปมีลูปอื่น ๆ ใน Excel VBA ตัวอย่างเช่น Do While Loop รหัสที่อยู่ระหว่าง Do While และ Loop จะได้รับการทำซ้ำตราบใดที่ส่วนของ Do While เป็นความจริง

1. วางปุ่มคำสั่งลงในเวิร์กชีทของคุณและเพิ่มโค้ดโค้ดต่อไปนี้:

Dim i As Integer
i = 1

Do While i < 6
    Cells(i, 1).Value = 20
    i = i + 1
Loop

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

ทำในขณะที่ Loop

คำอธิบาย: ตราบเท่าที่ i ต่ำกว่า 6, Excel VBA ใส่ค่า 20 ลงในเซลล์ที่จุดตัดของแถว i และคอลัมน์ 1 และเพิ่มขึ้น i by 1. ใน Excel VBA (และในภาษาโปรแกรมอื่น ๆ ) สัญลักษณ์ "=" หมายถึง กลายเป็น. ไม่ได้หมายความว่าเท่ากัน ดังนั้น i = i + 1 หมายถึง i กลายเป็น i + 1 กล่าวอีกนัยหนึ่ง: นำค่าปัจจุบันของ i และเพิ่ม 1 ลงไป ตัวอย่างเช่นถ้า i = 1 i กลายเป็น 1 + 1 = 2 ดังนั้นค่า 20 จะถูกใส่ลงในคอลัมน์ A ห้าครั้ง (ไม่ใช่ 6 เนื่องจาก Excel VBA จะหยุดเมื่อ i เท่ากับ 6)

2. ป้อนตัวเลขในคอลัมน์ A

จำนวนแถว

3. วางปุ่มคำสั่งลงบนเวิร์กชีทของคุณและเพิ่มโค้ดโค้ดต่อไปนี้:

Dim i As Integer
i = 1

Do While Cells(i, 1).Value <> ""
    Cells(i, 2).Value = Cells(i, 1).Value + 10
    i = i + 1
Loop

ผลลัพธ์เมื่อคุณคลิกปุ่มคำสั่งบนแผ่นงาน:

ขั้นสูงทำในขณะที่ลูป

คำอธิบาย: ตราบเท่าที่เซลล์ (i, 1)ค่าไม่ว่างเปล่า (<> หมายถึงไม่เท่ากับ), Excel VBA ป้อนค่าลงในเซลล์ที่จุดตัดของแถว i และคอลัมน์ 2 นั่นคือ 10 สูงกว่าค่าในเซลล์ที่จุดตัดของแถว i และคอลัมน์ 1 Excel VBA จะหยุดเมื่อ i เท่ากับ 7 เนื่องจาก Cells (7, 1). ค่าว่างเปล่า นี่เป็นวิธีที่ดีในการวนรอบแถวต่างๆบนแผ่นงาน

อ่านเพิ่มเติมได้ที่: