For...Next Statements เป็นรหัสที่ใช้สั่งให้ทำงานทวนซ้ำตามจำนวนรอบที่เรากำหนด โดยมีโครงสร้างการเขียนดังนี้

For counter = start To end [Step step]
    [statements]
    [Exit For]
    [statements]
Next [counter]

  • counter เป็นตัวแปรที่กำหนดขึ้น ส่วนมากจะกำหนดชื่อตัวแปรเป็น i, j, k
  • start เป็นเลขเริ่มต้นของรอบแรก
  • end เป็นเลขสุดท้ายของรอบสุดท้าย
  • step เป็นช่วงของเลขที่ต้องการให้บวกเพิ่มให้กับ counter ในรอบถัดไป ถ้าละส่วนของ step ไม่กำหนดลงไป จะถือว่า step=1
  • statements เป็นรหัสคำสั่งที่ต้องการให้ทำงานซ้ำ
  • Exit For ใช้กับกรณีที่ต้องการใช้เงื่อนไขให้เลิกทำงานวนซ้ำ


ตัวอย่าง

ต้องการสั่งพิมพ์สลิปเงินเดือนให้กับพนักงานทุกคน

image027

For i = 1 To [Total]
    [Choice] = i
    ActiveWindow.SelectedSheets.PrintPreview
    ActiveWindow.SelectedSheets.PrintOut
Next i

  • Total เป็น Range Name ในตารางที่เก็บรายละเอียดเงินเดือนพนักงาน โดยมีสูตร =CountA(ตารางชื่อพนักงานทั้งหมด) เพื่อหายอดจำนวนพนักงานทั้งหมด
  • For i = 1 To [Total]
    ทำหน้าที่สั่งให้เริ่มทำงานทวนซ้ำ ตั้งแต่รอบที่ 1 ถึง รอบสุดท้ายเท่าจำนวนพนักงานทั้งหมด
  • Choice เป็น Range Name ใช้สำหรับรับเลขที่พนักงาน เพื่อใช้เลขที่พนักงานนี้ไปค้นหาข้อมูลของพนักงานเลขที่นั้นๆ นำมาแสดงในใบสลิปเงินเดือน
  • ในตารางที่เตรียมไว้เป็นแบบสลิปเงินเดือน ให้ใช้สูตร Index เพื่อดึงข้อมูลของพนักงานตามเลขที่แสดงไว้ใน Choice เช่น ถ้าต้องการชื่อพนักงานที่เก็บไว้ใน column แรก ให้ค้นหาข้อมูลมาแสดงในสลิปโดยใช้สูตร
    =Index(MyData,Choice,1)
  • [Choice] = i
    ทำหน้าที่ส่งค่า i ไปที่เซลล์ Choice จึงทำให้สูตร Index คำนวณตาม แล้วสูตร Index จะดึงข้อมูลของพนักงานตามเลขที่ของ i มาแสดงในใบสลิป ทั้งนี้ระบบการคำนวณต้องเป็น Automatic อยู่แล้วด้วย (แนะนำให้เพิ่มรหัสว่า Calculate ต่อท้ายบรรทัดนี้ เพื่อสั่งให้แฟ้มคำนวณ โดยไม่ต้องห่วงว่าแฟ้มเป็น Automatic หรือไม่)
  • ActiveWindow.SelectedSheets.PrintPreview
    ActiveWindow.SelectedSheets.PrintOut
    ทำหน้าที่แสดงภาพสลิปบนหน้าจอให้เห็นก่อน รอให้เราคลิกสั่งปิด Print Preview จากนั้นจึงสั่งให้พิมพ์สลิปโดยอัตโนมัติ
    (ถ้าต้องการให้พิมพ์สลิปทันทีโดยไม่ต้องหยุดแสดงภาพที่จะพิมพ์บนจอ ให้ใช้รหัสคำสั่งบรรทัด PrintOut เพียงบรรทัดเดียว)
  • Next i
    ทำหน้าที่สั่งให้วนกลับไปเพิ่ม i = i+1 เป็นรายการถัดไป ขอแนะนำให้เขียนตัว i ต่อท้าย Next ไว้เสมอ เพื่อแสดงว่า Next ตัวนี้เป็นชุดของ i
  • หากต้องการปรับปรุงรหัสให้ดีขึ้น แทนที่จะให้เริ่มจากเลข 1 ไปจนถึงคนสุดท้ายตามค่าที่ส่งมาจากตาราง ควรใช้ InputBox กำหนดค่า i และ Total เพื่อจะได้เลือกสั่งพิมพ์จากรายการใดก็ได้ และเมื่อพิมพ์เสร็จแล้ว ควรย้อนค่าใน Choice กลับเป็นเลขเริ่มต้นเดิม หรือเป็นเลข 1 เพื่อแสดงรายการแรก ดีกว่าปล่อยให้ตารางแสดงข้อมูลรายการสุดท้ายค้างไว้


Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top