วันอาทิตย์ที่ 6 มกราคม พ.ศ. 2556

การ Loop ในช่วงเซลล์

เมื่อใช้ Visual Basic มีบ่อยครั้งที่ต้องวนรอบ (Loop) เพื่อเข้าถึงแต่ละเซลล์ในบล็อกของช่วงเซลล์ ซึ่งการทำเช่นนี้ คุณสามารถรวมคำสั่งวน Loop เพื่อดำเนินการกับแต่ละเซลล์

วิธีการวนซ้ำในช่วงเซลล์ที่ต้องการวิธีหนึ่งคือการใช้ For…Next กับ Cells Property การใช้ Cells Property สามารถทดแทนนับวนจำนวนของเซลล์ (หรืออื่น ๆ ตัวแปร หรือนิพจน์) ในตัวอย่างต่อไปนี้ ตัวแปร Counter ถูกแทนด้วยเลขแถว เป็นการวนซ้ำในช่วงเซลล์ C1:C20 โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01

 

Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub


วิธีที่ง่ายอีกวิธีหนึ่งคือการวนซ้ำในช่วงเซลล์โดยการใช้ For Each…Next กับ Collection ของเซลล์ใน Range Property โดย Visual Basic ตั้งค่า Object สำหรับเซลล์ถัดไปให้ทำงานแต่ละครั้งการวนรอบ ขั้นตอนต่อไปนี้เป็นการวนรอบช่วงเซลล์ A1:D10 โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01


Sub RoundToZero2()
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub


ถ้าคุณไม่ทราบขอบเขตของช่วงคุณต้องการวนซ้ำ คุณสามารถใช้ CurrentRegion Property เพื่อระบุช่วงที่ล้อมรอบเซลล์ที่ใช้งาน ตัวอย่างเช่น Precedure ต่อไปนี้ เมื่อเรียกใช้จากแผ่นงาน เกิดการวนซ้ำในช่วงที่ล้อมรอบเซลล์ที่กำลังใช้งาน โดยตั้งค่าเป็น 0 เมื่อเซลล์ใดมีค่าน้อยกว่า 0.01


Sub RoundToZero3()
For Each c In ActiveCell.CurrentRegion.Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

หมายเหตุ: มีเพียงสมาชิกของบล็อกนี้เท่านั้นที่สามารถแสดงความคิดเห็น