Excel VBA | ตอนที่ 4 คำสั่งเงื่อนไข (IF…Then,For…Next ,Do While)

16/12/2017 10:48 AM คอมพิวเตอร์ 1,237 views

คำสั่งเงื่อนไข (IF)

เมื่อเข้าใจช่วงข้อมูลและคำสั่งต่างๆ คราวๆแล้ว บางครั้งการเขียนชุดทำสั่งอาจจะต้องมีเงื่อนไขบ้างโดยส่วนนี้จะอธิบายเงื่อนไข If พูดง่ายๆก็คือ ถ้า …..ไม่ เช่น ถ้าข้อมูลเป็นผู้ชาย ทำเงื่อนไข 1 ถ้าไม่ใช่ทำเงื่อนไข 2

If…. Then

เป็นเงื่อนไขที่ไม่ซับซ้อน ง่ายๆ เช่น ใช่หรือไม่ …
จากคำสั่งถ้าเรากรอกตัวเลขที่มากกว่า 60 ในช่อง A1 โปรแกรมจะแสดงคำตอบในช่อง B1 ว่า pass

Dim Score As Integer, Result As String
Score = Range(“A1”).Value
If score >= 60 Then  Result = “pass
Range(“B1”).Value = Result

 


If…..Then Else

เป็นเงื่อนไขที่ซับซ้อนขึ้นมาอีกขั้นเมื่อเช็คแล้วไม่ใช่เงื่อนไขที่ 1 จะเป็นเงื่อนไข Else ทันที
จากคำสั่งถ้าเรากรอกตัวเลขที่มากกว่า 60  ในช่อง A1 โปรแกรมจะแสดงคำตอบในช่อง B1 ว่า pass
แต่ถ้ากรอกตัวเลขน้อยกว่า 60 ในช่อง A1 โปรแกรมจะแสดงคำตอบในช่อง B1 ว่า fail
ต่างจากเงื่อนไข  If…. Then ด้านบนถ้ากรอกเลขน้อยกว่า 60 จะไม่แสดงอะไร

Dim Score As Integer, Result As String
Score = Range(“A1”).Value
If Score >= 60 Then
Result = “pass
Else
Result = “fail
End If
Range(“B1”).Value = Result


If…..Then Elseif

เป็นเงื่อนไขที่ซับซ้อนขึ้นมาอีกหน่อยเมื่อเช็คแล้วไม่ใช่เงื่อนไขที่ 1 จะเช็คเงื่อนไขที่ 2 ถ้าไม่ใช่จะเช็คเงื่อนไขที่ 3 ไปเรื่อยๆจนถึง Else

Dim Score As Integer, Result As String
Score = Range(“A1”).Value
If Score >= 60 Then
Result = “Old
ElseIf Score >= 20 Then
Result = “Adult
Else
Result = “Student
End If
Range(“B1”).Value = Result
MsgBox Result

จากตัวอย่างถ้ากรอกตัวเลขอายุมากกว่าหรือเท่ากับ 60 จะแสดงคำว่า Old

ถ้ากรอกตัวเลขมากกว่า 20 แต่น้อยกว่า 60 จะแสดงคำว่า Adult

ถ้ากรอกตัวไม่ได้อยู่สองช่วงด้านบน (น้อยกว่า 20) จะแสดงคำว่า Student

ถ้าอยากให้แสดงคำตอบเป็นกล่องข้อความก็เติมคำสั่ง MsgBox Result เพิ่มเดิมตามตัวอย่างคำสั่งด้านบน
โดย Result คือตัวแปร String ของคำตอบแต่ละเงื่อนไข

 

เงื่อนไข Loop (For…Next ,Do While )

เงื่อนไขแบบ Loop จะทำงานวนซ้ำไปเรื่อยๆ โดยมีจำนวนรอบที่แน่นอนและจะตรวจสอบไปด้วยว่าได้ทำวนซ้ำตามจำนวนเงื่อนไขที่กำหนดไว้หรือยัง มี 2 แบบที่นิยมใช้คือ For…Next และ Do…While

For…Next

เงื่อนไขเดียวโดยเติมตัวเลข 100 ในแถวที่ 1 จนถึง 6 (ตัวแปร Row)

Dim Row As Integer
For Row = 1 To 6
Cells(Row, 1).Value = 100
Next Row
MsgBox “ทำงานเสร็จเรียบร้อย”

เงื่อนไขซ้อนเงื่อนไขโดยเติมตัวเลข 100 ในแถวที่ 1 จนถึง 6 (ตัวแปร Row) และคอลัมน์ 1-2 (ตัวแปร Col)

Dim Row As Integer, Col As Integer
For Row = 1 To 6
For Col = 1 To 2
Cells(Row, Col).Value = 100
Next Col
Next Row
MsgBox “ทำงานเสร็จเรียบร้อย”


Do While Loop

เป็นคำสั่งที่ใช้ในทำงานแบบวนซ้ำโดยไม่ทราบรอบที่แน่นอนและจำเลิกทำเมื่อเงื่อนไขเป็นเท็จ โดยจะเติมตัวเลข 20 ในคอลัมน์ A จำนวน 6 แถว เช่น

Dim Row As Integer
Row = 1
Do While Row < 6
Cells(Row, 1).Value = 20
Row = Row + 1
Loop
MsgBox “ทำงานเสร็จเรียบร้อย”

แบบซ้ำซ้อนขึ้นมาอีกขั้น ลองเติมตัวเลขในคอลัมน์ A คำสั่งจะเช็คแต่ละแถวลงไปเรื่อยๆ ถ้าตรงเงื่อนไขจะทำงาน ถ้าไม่ตรงเงื่อนไข จะเลิกทำ โดยจะบวกค่าในคอลัมน์ A + 10 และเก็บค่าไว้ในคอลัมน์ B

Dim Row As Integer
Row = 1
Do While Cells(Row, 1).Value <> “”
Cells(Row, 2).Value = Cells(Row, 1).Value + 10
Row = Row + 1
Loop
MsgBox “ทำงานเสร็จเรียบร้อย”