กลับมาอีกครั้งหลังจากไปเตร็ดเตร่ กับเรื่องราวอื่นๆในชีวิตสะนาน จนบางทีลืมไปว่าเขียน 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 ได้ ซึ่งต้องเป็น
เพื่อให้เข้าใจง่าย จะลองเขียนโปรแกรมตามตัวอย่างที่ 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 เพื่อประกอบการตัดสินใจได้แล้วนะ ^^
เพิ่มเติม:
คำสั่ง 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 เพื่อประกอบการตัดสินใจได้แล้วนะ ^^
เพิ่มเติม:
- เงื่อนไขที่อยูหลัง If หรือ ElseIf นั้นจะต้องเป็น สมการ อสมการ หรือ ตัวแปร ที่สามารถให้ค่าเป็นจริงหรือเป็นเท็จได้
สมการ (a+2=b-6)
อสมการ (a<c-5)
ตัวแปร (ที่มีค่า เป็น True หรือ False)
- อสมการที่ใช้ใน VBA มีดังนี้
- < น้อยกว่า
- <= น้อยกว่าหรือเท่ากับ
- > มากกว่า
- >= มากกว่าหรือเท่ากับ
- <> ไม่เท่ากับ (เขียน < และ > ติดกัน)
3. เงือนไขที่ประกอบด้วย หลายๆเงือนไขต้องมีตัวเชื่อม เช่น And หรือ Or ตัวอย่าง เช่น (a>0 And a<5)
หรือ (a<5 Or a>10)