บทที่ 5 การใช้คำสั่ง Select Case , For Next และ Do While อ.สุรินทร์ทิพ ศักดิ์ภูวดล สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร
การใช้คำสั่ง Select Case
Select Case Select Case มีรูปแบบดังนี้ Select Case Variable Case n1 X1 Case else Y End Select ถ้าเงื่อนไขตรงกับ Case N1 ให้ไปทำคำสั่ง X1 ถ้าเงื่อนไขตรงกับ Case N2 ให้ไปทำคำสั่ง X2 ถ้าเงื่อนไขตรงกับ Case อื่นๆ นอกเหนือจากที่กำหนดมา ให้ไปทำคำสั่ง Y
ตัวอย่าง 5.1 จากการตัวอย่างที่ 4.1 ทำงานสามารถแก้ไขได้ ดังนี้ Sub SelectCase() SelectCell = ActiveCell.Address Range(SelectCell).Select Select Case ActiveCell.Value Case 0 To 2500 ActiveCell.Offset(0, 1).Value = " ส่วนลด 5 %" ActiveCell.Offset(0, 2).Value = ActiveCell.Value * 0.05 Case 2500 To 10000 ActiveCell.Offset(0, 1).Value = " ส่วนลด 10 %" ActiveCell.Offset(0, 2).Value = ActiveCell.Value * 0.1 Case Is > 10000 ActiveCell.Offset(0, 1).Value = " ส่วนลด 15 %" ActiveCell.Offset(0, 2).Value = ActiveCell.Value * 0.15 Case Else MsgBox "Invalid Amount" End Select ActiveCell.Offset(0, 2).Select With Selection.Font .Name = "Cordia New" .Size = 15 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 26 End With End Sub
แบบฝึกหัด ให้ลองเขียนโปรแกรมและ ลองใส่ ค่าเงินเดือน = 2500.01 จากนั้นกดปุ่มเพื่อทำการประมวลผล
การใช้คำสั่ง For … Next
For…Next For i = 1 to n X1 X2 … Next i การทำงานจะเริ่มจาก รอบที่ i=1 เมื่อเจอคำสั่ง Next I ค่า I ก็จะเพิ่มขึ้นเป็น 2 = (i+1) จากนั้นโปรแกรมจะกลับไปทำงานที่คำสั่ง For i=1 to n จนครบจำนวน n รอบ จึงจะออกไปทำคำสั่งที่อยู่ถัดจาก Next i
ตัวอย่าง 5.2 Sub fornext() For i = 1 To 10 ActiveCell.Value = i ActiveCell.Offset(0, 1).Value = " การทำงานรอบที่ " & i ActiveCell.Offset(1, 0).Select Next i End Sub
การใช้คำสั่ง Do … While
Do…While Do While Condition X1 X2 … Loop ถ้าเงื่อนไขเป็นจริง จะไปทำคำสั่ง x1,x2,…จนถึงคำสั่ง Loop โปรแกรมจะวนกลับไปทำคำสั่ง Do while Condition อีกรอบ และตรวจสอบเงื่อนไขอีกรอบหากเงื่อนไขเป็นจริงอีก ก็จะทำงานเหมือนรอบแรก หากการตรวจสอบเงื่อนไขเป็นเท็จเมื่อใด โปรแกรมจะกระโดดข้ามไปทำคำสั่งถัดจาก Loop ทันที
ตัวอย่าง 5.3 Sub ShowNumber() Range("B2").Select Num = 1 Do While Num <= 10 ActiveCell.Value = Num ActiveCell.Offset(0, 1).Value = " หมายเลข " & Num ActiveCell.Offset(1, 0).Select Num = Num + 1 Loop End Sub
คำสั่งในบทเรียน - คำสั่ง Do While not isEmpty() ทำไปในขณะที่ข้อมูลไม่เป็นช่องว่าง คำสั่ง Selection.EntireRow.Insert คำสั่งแทรกแถว แบบ EntireRow - คำสั่ง Selection.EntireRow.Delete คำสั่งลบแถว แบบ EntireRow
ตัวอย่าง 5.4 Sub InsertEntireRow() Selection.EntireRow.Insert ตัวอย่าง 5.4 Sub InsertEntireRow() Selection.EntireRow.Insert ActiveCell.Offset(1, 0).Range("A1").Select End Sub
ตัวอย่าง 5.5 Sub DeleteEntireRow() Selection.EntireRow.Delete ตัวอย่าง 5.5 Sub DeleteEntireRow() Selection.EntireRow.Delete ActiveCell.Offset(1, 0).Range("A1").Select End Sub
การแสดงค่าต่างๆ ตามตำแหน่งที่ต้องการ
ให้กลับไปศึกษาเป็นการบ้าน กำหนดข้อมูลดังตาราง
ตัวอย่าง 5.5 การแสดงค่าต่างๆ ตามตำแหน่งที่ต้องการ Sub showdata() BeginCell = ActiveCell.Address Range(BeginCell).Select Do While Not IsEmpty(ActiveCell.Value) Value1 = ActiveCell.Value ActiveCell.Offset(1, 0).Select Value2 = ActiveCell.Value Value3 = ActiveCell.Value LastCellofThisLoop = ActiveCell.Address Range("C100").Select Selection.End(xlUp).Select ActiveCell.Value = Value1 ActiveCell.Offset(0, 1).Value = Value2 ActiveCell.Offset(0, 2).Value = Value3 Range(LastCellofThisLoop).Select Loop End Sub
แบบฝึกหัดให้เขียนโปรแกรมตัดเกรด ให้นิสิตเขียนโปรแกรมตัดเกรดตามเกณฑ์ต่อไปนี้ ขั้นตอนการทำงาน 1. หาจำนวนนิสิตทั้งหมด 2. ทำจำนวนรอบเท่ากับนิสิต 3. สร้างเงื่อนไขการคิดเกรด โดยใช้คำสั่ง Select Case
เกณฑ์การคิดเกรด เกรด A คะแนน >= 80 เกรด B คะแนน >= 70 เกรด C คะแนน >= 60 เกรด D คะแนน >= 50 เกรด F คะแนน < 50
การบ้านให้รวบรวมความรู้ที่มีอยู่ทั้งหมดพัฒนาโปรแกรม ซึ่งสามารถคำนวณรายได้รวมทั้งเดือนของทุกคน
คำสั่ง 1. ใช้คำสั่ง Do while 2. เมื่อ Click Button ให้วน Loop ทำการคำนวณจนครบทุกคน 3. ถ้ารายได้รวมเกิน 10000 บาท ให้แสดงตัวเลขรายได้รวมสีเหลือง 4. ถ้ารายได้รวมเกิน 50000 บาท ให้แสดงตัวเลขรายได้รวมสีฟ้า 5. ถ้ารายได้รวมเกิน 100000 บาท ให้แสดงตัวเลขรายได้รวมสีเขียว
หนังสืออ้างอิง เรียนลัด VBA บน Excel, วิศัลย์ พัวรุ่งโรจน์ Excel VBA Programming, วิชา ศิริธรรมจักร์ และสุรเชษฐ์ วงศ์ชัยพรพงษ์