MsgBox – Yes No Cancel

การทำงานบ้างครั้ง ถ้าต้องการให้ผู้ใช้งานเลือกคำตอบ เราอาจจะเขียนออกมาในรูปแบบ Message Box ได้ จากตัวอย่างจะเป็น MsgBox แบบ Yes,No และ Cancel มีโค้ดดังนี้

Sub msgbox1()
'
' msgbox1 Macro
'
Dim i As Integer
Dim name As String
i = 2
Do While Cells(i, 1).Value <> ""
    name = Cells(i, 1).Value
    answer = MsgBox("คุณ " & name & " เพศชาย?", vbYesNoCancel)
        If answer = vbYes Then
                Cells(i, 2).Value = "ชาย"
            ElseIf answer = vbNo Then
                Cells(i, 2).Value = "หญิง"
            Else
            Exit Sub
        End If
    i = i + 1
Loop
'
End Sub

Dim i As Integer

Dim name As String

‘ประกาศตัวแปร i เป็น Integer เพื่อกำหนดแถว และ ประกาศตัวแปร name เป็น String เพื่อเก็บชื่อแต่ละแถว

************************

i = 2

‘กำหนดให้ i มีค่าเท่ากับ 2 เพื่อให้เริ่มวนลูป ตั้งแต่บรรทัดที่ 2

************************

Do While Cells(i, 1).Value <> “”

Loop

‘วนลูป ตั้งแต่แถว i คอลัมน์ ที่ 1 จะออกจากลูป เมื่อแถว i ลอลัมน์ 1 เป็นค่าว่าง

************************

name = Cells(i, 1).Value

answer = MsgBox(“คุณ ” & name & ” เพศชาย?”, vbYesNoCancel)

‘เก็บค่าชื่อแต่ละแถวไว้ในตัวแปรชื่อ name

‘แสดง Message Box ชื่อในแต่ละแถว ด้วยปุ่ม Yes, No หรือ Cancel และ เก็บค่าคลิกที่ปุ่มไว้ในตัวแปรชื่อ answer

************************

If answer = vbYes Then
     Cells(i, 2).Value = “ชาย”
ElseIf answer = vbNo Then
     Cells(i, 2).Value = “หญิง”
Else
     Exit Sub
End If

‘เงื่อนไข ถ้าค่าที่คลิกซึ่งอยู่ในตัวแปร answer เท่ากับ vbYes หรือว่า คลิกที่ Yes ให้แถวที่ i คอลัมน์ที่ 2 มีค่าเท่ากับ “ชาย”

‘หรือถ้าคลิก No ให้แถวที่ i คอลัมน์ที่ 2 มีค่าเท่ากับ “หญิง”

‘หรือถ้าคลิก Cancel ให้จบการทำงาน

************************

i = i + 1

‘เพิ่มค่าบรรทัด i ขึ้นทีละ 1

ผลที่ได้หลังจากรัน VBA และคลิกตอบแล้ว

บทความอื่น

ใส่ความเห็น