วันจันทร์ที่ 24 กันยายน พ.ศ. 2555

คำสั่ง IF และการตัดสินใจ ใน VBA

กลับมาอีกครั้งหลังจากไปเตร็ดเตร่ กับเรื่องราวอื่นๆในชีวิตสะนาน จนบางทีลืมไปว่าเขียน Blog ไว้ยังไม่สำเร็จตั้งหลายบทความ วันนี้ก็เลยกลับมาทำให้สำเร็จสักเรื่อง กับบทความที่ไม่ยาวมาก นั่นคือ คำสั่ง IF

คำสั่ง IF ใช้ในการตัดสินใจในการเขียนโปรแกรมที่มีทางเลือกให้โปรแกรมมากกว่า 1 ทาง เช่น
ตัวอย่างที่ 1
              ถ้า  a > 10 -->  b=10  หรือ
              ถ้า  a <=10  (อ่านว่า a น้อยกว่าหรือเท่ากับ 10)  --> b=20

     จะเห็นว่า ค่าของ b ตามตัวอย่างข้างต้นนั้นขึ้นอยู่กับค่าของ a  ซึ่งมีอยู่ 2 กรณีคือ a มีค่าน้อยกว่า 10 และ a มีค่ามากกว่าหรือเท่ากับ 10
     ซึ่งเห็นว่ามีทางเลือกของโปรแกรมมากกว่าหนึ่งทาง เราสามารถเขียนโปรแกรมแทนการคิดแบบนี้ได้ดังนี้ครับ
รูปแบบที่ 1
------------------------------------------------------------------------------------------------------------

       If (ประโยคเงื่อนไขทางคณิตศาสตร์) Then
           การกระทำชุดที่ 1 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง)
        Else
           การกระทำชุดที่ 2 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นเท็จ (มีได้มากกว่าหนึ่งคำสั่ง)
        End If 
----------------------------------------------------------------------------------------------------------
ประโยคเงื่อนไขทางคณิตศาสตร์ จะต้องสามารถให้ค่า True หรือ False ได้ ซึ่งต้องเป็น

  • สมการ บมีเครื่องหมาย =ล
  • อสมการ [มีเครื่องหมาย <, <=,  >,  >=, <>  ]
  • ตัวแปร บที่มีค่าเป็น True หรือ False] โดยที่เราสามารถกำหนดค่าให้ตัวแปรเป็น True หรือ False ได้โดยตรง เช่น a=True   หรือ  a=False


เพื่อให้เข้าใจง่าย จะลองเขียนโปรแกรมตามตัวอย่างที่ 1 ออกมาเป็นคำสั่ง IF ตามรูปแบบข้างต้น ได้ดังนี้


        If (a < 10) Then
           b = 10
        Else
           b = 20
        End If 

ในกรณีที่ มีหลายๆเงือนไข หรือมีจำนวนเงื่อนไขมากว่า 2   เช่น
ตัวอย่างที่ 2
         ถ้า a>10             --> b=1
         ถ้า  10> a > 20   --> b=2
         ถ้า  20> a > 30   --> b=3
         ถ้า  30> a > 40   --> b=4

รูปแบบการเขียนคำสั่ง IF มีดังนี้ครับ
รูปแบบที่ 2
----------------------------------------------------------------------------------------------------------


       If (ประโยคเงื่อนไขทางคณิตศาสตร์ที่ 1) Then 
           การกระทำชุดที่ 1 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        ElseIf (ประโยคเงื่อนไขทางคณิตศาสตร์ที่2 ) Then 
           การกระทำชุดที่ 2 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        ElseIf (ประโยคเงื่อนไขทางคณิตศาสตร์ที่3 ) Then 
           การกระทำชุดที่ 3 สำหรับกรณีที่ ประโยคเงื่อนไขเป็นจริง (มีได้มากกว่าหนึ่งคำสั่ง) 
        End If  

-------------------------------------------------------------------------------------------------------
หมายเหตุ  เราสามารถมี ElseIf ...Then  ได้ไม่จำกัดจำนวน ขึ้นอยู่กับจำนวนเงื่อนไขของเรา



เราสามารถเขียนโปรแกรมตามเงื่อนไขจากตัวอย่างที่่ 2 ตามรูปแบบที่2 ได้ดังนี้

If (a<10) Then
  b=1
ElseIf (a>10 And a<20) Then
  b=2
ElseIf (a>20 And a<30) Then
  b=3
ElseIf (a>30 And a<40) Then
 b=4
End If

ถ้าในกรณีที่ เงื่อนไขสุดท้าย เป็นเงื่อนไขที่ต้องทำถ้าเงื่อนไขก่อนหน้านี้ไม่จริงสักอัน เราจะไม่ใช้
ElseIf ...Then กับเงื่อนไขสุดท้าย แต่จะเปลี่ยนเป็น Else แทน เช่น


ตัวอย่างที่ 3
         ถ้า score >= 80             --> grade=A
         ถ้า 70<= score <80        --> grade=B
         ถ้า  60<= score <70        --> grade=C
         ถ้า  50<= score <60        --> grade=D
         ถ้า score <50                  --> grade=F 

เราสามารถเขียนโปรแกรมตามตัวอย่างที่ 3 ได้โดยจัดให้เงื่อนไข score<50 ไว้ล่างสุด เพื่อเป็นการบอกว่าถ้าเงื่อนไขต่างๆก่อนหน้านี้ไม่จริงให้ทำตามเงื่อนไขสุดท้ายนี้ โดยใช้ Else (ไม่ใช่ ElseIf...Then) ดังนี้

If(score>=80) Then
    grade="A"
ElseIf(70<= score And score<80) Then
    grade="B"
ElseIf(60<=score And score<70) Then
    grade="C"
ElseIf(50<=score And score<60) Then
    grade="D"
Else      ' เงื่อนไขสุดท้าย ใช้ Else แทน ElseIF...Then ถ้าไม่มีเงื่อนไขก่อนหน้านี้เป็นจริง ให้ทำตรงนี้ 
    grade="F"   
Endif

นอกจากนี้ยังมีกรณีพิเศษอีกเช่น มีเงื่อนไขที่มี 2 ทางเลือก แต่ว่าทางเลือกหนึ่งในสองนี้คือไม่ต้องทำอะไร เช่น
ตัวย่างที่ 4
     ถ้า a>0  --> b=b+1
     ถ้า a=0 และ a<0   --> ไม่ต้องทำอะไร
ถ้าเขียนโปรแกรมตามรูปแบบที่ 1 จะได้ว่า

If(a>0) Then
    b=b+1
Else

End If
จะเห็นว่าหลัง Else ไม่ต้องมีคำสั่งอะไร
เราสามารถเขียนโปรแกรมให้สั้นลงได้ โดยเขียนเพีงบรรทัดเดียวได้ โดยที่ไม่ต้องมี Else หรือ ElseIf...Then ได้ดังนี้

If(a>0) Then b=b+1

เพียงเท่านี้เราก็สามารถเขียนคำสั่ง IF เพื่อประกอบการตัดสินใจได้แล้วนะ ^^

เพิ่มเติม:

  1. เงื่อนไขที่อยูหลัง If หรือ ElseIf นั้นจะต้องเป็น สมการ อสมการ หรือ ตัวแปร ที่สามารถให้ค่าเป็นจริงหรือเป็นเท็จได้ 
         สมการ  (a+2=b-6)
         อสมการ (a<c-5)
        ตัวแปร (ที่มีค่า เป็น True หรือ False)
  1. อสมการที่ใช้ใน VBA มีดังนี้ 


  • <   น้อยกว่า
  • <= น้อยกว่าหรือเท่ากับ
  • >  มากกว่า
  • >= มากกว่าหรือเท่ากับ
  • <> ไม่เท่ากับ (เขียน < และ > ติดกัน)
3. เงือนไขที่ประกอบด้วย หลายๆเงือนไขต้องมีตัวเชื่อม เช่น And  หรือ Or ตัวอย่าง เช่น (a>0 And a<5)
   หรือ (a<5  Or  a>10)





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

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