แสดงบทความที่มีป้ายกำกับ Excel 2010 แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Excel 2010 แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 31 มีนาคม พ.ศ. 2559

#4 Hello World!!! Messagebox for VBA

ตอนนี้เราจะกล่าวถึง function สารพัดประโยชน์ ที่ใช้ตั้งแต่ฝึกหัดเขียนโปรแกรมจนถึงโปรแกรมที่ใช้งานจริงๆ นั้นคือ message box

ในแทบทุกภาษามักจะมี function เฉพาะ สำหรับเรียกใช้ message box นี่ก็เป็นอีก หนึ่งเครื่องยื่นยันว่า message box เป็นเครื่องมือที่ใช้บ่อยในวงการเขียนโปรแกรม

วัตถุประสงค์หลักๆของการใช้ message boxคือการส่งข้อความไปถึงผู้ใช้งาน(user) เผื่อให้ผู้ใช้งานรับทราบหรือตัดสินใจอะไรบางอย่าง

แล้วหน้าตา message box เป็นยังไง

จะเห็นได้ว่า message box บางครั้งมี แค่ ปุ่ม "OK" บางครั้ง มี "Yes" "No" หรือรูปแบบอื่นๆ

มันก็มีหน้าตาประมาณนี้ละครับ

Message box ใช้เมื่อไหร่บ้างละ

เราจะเห็น message boxได้ในหลายๆงาน
เช่นเวลา save file ทับ file เก่า

เตือนว่ามี error เวลาใส่ข้อมูลผิด

เตือนเวลาเราปิดโปรแกรมโดยที่ยังไม่ได้เซฟ

และยังมีวิธีการใช้ message box อีกมากมาย

เวิ่นเว้อมาเยอะแยะละ เรามาเริ่มการเขียนโปรแกรมกันเลยดีกว่า

Syntax
MsgBox(prompt[, buttons] [, title] [, helpfile, context])

*** วิธีการอ่านนะครับ ถ้ามี [ ] แปลว่าจะมีค่าหรือไม่มีค่าก็ได้นะครับ แต่ถ้ามารต้องมีค่าให้ครบในปีกกาเหลี่ยมนะครับ

Prompt (String) คือค่าที่เราอยากให้แสดงเพื่อที่จะแจ้งข้อมูลให้กับผู้ใช้ เราสามารถใส่อะไรไปก็ได้แต่ต้องเป็น string นะครับ

Buttons คือประเภทของปุ่มที่เราอยากให้แสดงนะครับ เช่น
vbOKOnly คือมีปุ่มโอเคปุ่ม OK ปุ่มเดียว
vbOKCancel คือมีปุ่ม OK กับ Cancel
vbYesNoCancel  คือมีปุ่ม Yea, No, Cancel
เอาละ เริ่มเดาง่ายแล้วใช่ไหมครับ งั้นลองทายอันนี้หน่อยครับ
vbRetryCancel มีปุ่มอะไรบ้างครับ

ปุ่ม Retry กับ Cancel (เย้ๆๆๆ ทายถูกกันใช่ไหมครับ)
คราวนี้เราก็เบิกใช้ได้ตามสะดวกนะครับ แต่อย่างไรก็ดีในตอนนี้ เราจะใช้เฉพาะ
vbOKOnly ก่อนนะครับ แล้ว Buttons ประเภทอื่นๆ จะเรียนใช้ในตอนที่เกี่ยวกับ 
Condition นะครับ

Title (String)
อันนี้คือส่วนหัวของ massage box ตามรูปข้างล่าง

เราใช้เพื่อให้ผู้ใช้งานสามารถเข้าใจสิ่งที่เดี๋ยวของได้ง่ายขึ้นครับ

[, helpfile, context] ใช้เพื่อเป็นข้อมูล เวลากด F1 นะครับ แต่รายละเอียดยังไม่ขอพูดในบทนี้นะครับ

เรามาดูตัวอย่าง code กันนะครับ

Sub learnMESSAGEBOX
Message box ไม่มี title
Messagebox มี title
Message box มี title และ เปลี่ยนปุ่ม


endsub

#2 Prepare Environment for VBA

หลังจากที่เราเข้าใจว่า VBA คืออะไรแล้ว สำหรับตอนที่2 นี้เราจะมาเตรียม Environment กันนะครับ เนื่องจากว่า เราใช้ Excel ระดับ Advance แล้ว ดังนั้นจึงต้องมีการจุดธูปอัญเชิญ VBA เอ๊ย การเตรียมความพร้อมสำหรับทำการเขียนโค๊ดกันสักหน่อย



1) สำหรับวิธีนี้เราจะเปิด VBA จาก Ribbon นะครับ ซึ่งวิธีนี้จะทำให้ได้เครื่องมือต่างๆมาด้วย เพื่อที่เราจะสามารถเล่นกับ VBA ได้มากขึ้น (เนื่องจากว่าตอนที่#2 นี้ผมยังใช้ Office 2010 อยู่ เพราะฉะนั้นขั้นตอนต่างๆก็ยังเป็น ของ 2010 อยู่นะครับ)

ขั้นตอนมีดังต่อไปนี้

1.1) เลือก Files
1.2) เลือก Options




1.3 เลือก Customize Ribbon (ตามช่อง 1)
1.4 เลือก Popular Command ในช่อง Choose command from (ตามช่อง 2)
1.5 เลือก Main Tabs ในช่อง Customize the ribbon (ตามช่อง 3)
1.6 ในช่อง Main tab ให้เรา ติ๊กถูกที่หน้าคำว่า Developer Option (ตามช่อง 4)
1.7 กด OK (ตามช่อง 5)








หลังจากกด โอเคแล้วจะเห็นได้ว่าจะมี Ribbon ชื่อว่า Developer ขึ้นมา และเราสามารถเปิด VBA ได้โดยคลิ๊ก Developer แล้ว Visual Basic






2) โดยปกติแล้วเราสามารถเรียกใช้ VBA ได้ โดยการกด Alt + F11 นะครับ อันนี้เป็นวิธีที่ง่ายและเร็วที่สุด


เอาละ เราเตรียม Environment พร้อมละเริ่มมีไฟอยากจะcoding ละในตอนต่อไปเราจะเริ่ม coding นะครับ

หากมีข้อสงสัย หรือว่าไม่สามารถทำตามได้ รบกวน Post คำถามมาข้างล่างเลยนะครับจะตอบกลับให้เร็วที่สุด ขอบคุณครับ

ตอนต่อไปเราจะมาเริ่มเขียน Coding กันแล้วนะครับ กับ #3 Hello World!!! Debug.Print in Excel VBA

ถ้าใครยังไม่ได้อ่านตอนที่แล้ว สามารถกลับไปอ่านได้นะครับที่ #1 VBA คืออะไร อะไรคือ VBA

#3 Hello World!!! Debug.Print in Excel VBA

ลองมาย้อนคิดดูว่าเวลาเปิดอ่านหนังสือเกี่ยวกับคอมพิวเตอร์สำหรับมือใหม่แล้วจะต้องเจอแบบฝึกหัดแรกๆในการเขียน code ต้องเป็นคำว่า Hello World ตลอดๆ ไม่มีหัวข้ออย่างอื่นคิดกันหรือไงน้าาาาา แต่สำหรับผม ผมว่ามันอาจเป็นคำศัพท์ง่ายๆ ที่สามารถใช้อธิบายเกี่ยวกับ โลกใหม่ที่เรากำลังเข้าไปเรียนรู้เกี่ยวกับมันก็ได้มั้งนั้นก็เป็นที่มาของเรื่องที่เราจะเรียนรู้กันวันนี้ #3 Hello World!!! Debug.Print in Excel VBA

วันนี้เราจะมาเรียนเรื่องเกี่ยวกับ การใช้ Immediate out และ msgbox (Message box) กัน ซึ่ง function 2 อันนี้ถือว่าเป็น function พื้นฐานสำหรับการที่เราจะเขียน coding ในหลายๆ ภาษา แถมยังใช้เพื่อการ debug ได้อีกด้วย เรามาดูกันว่า function ทั้ง 2 อันนี้ มีรูปแบบ syntax ยังไงแล้วเราจะเอาไปใช้ทำอะไรบ้างดีกว่า

function แรก คือ Debug.Print
function นี้เป็น function ที่จะแสดงค่าในกล่อง immediate windows เพื่อใช้สำหรับการที่เราต้องการให้ค่าต่างๆที่เราทำออกมานั้นไปแสดงอยู่ใน ช่อง Immediate output วัตถุประสงค์หลักๆ เพื่อที่จะดูค่าว่า สิ่งที่เรากำลังจะเอาไปใช้แสดงในหน้าจอนั้นถูกหรือเปล่า ถ้าถูกก็ดี ถ้าไม่ถูกก็จะได้รู้ว่าต้องการอะไรยังไงต่อ

การจะดู immediate output นั้นเริ่มจากการ ที่เราเปิด View -> Immediate Windows


เราก็จะได้ immediate windows ขึ้นมาข้างล่างนะครับ


จากนั้นเราก็เริ่มใส่ข้อมูลลงไปโดย Syntax เพื่อที่จะ print เป็นดังนี้
Debug.Print [Iterms][;]

*** Parameter ที่อยู่ใน [] เป็นoptional แปลว่าไม่ต้องใส่ก็ได้
Debug.Print [items][;]

Sub test()

Debug.Print "Hello World with common text"
Debug.Print "Hello " & "World with concatenation"
Dim str As String
str = "Hello "
Debug.Print str & "World with variable"
End Sub



Trick บางที่ถ้าเราอยากให้มีการเว้นบันทัดเพื่อให้ดูง่ายๆ เราอาจจะใส่คำว่า Debug.Print ลงไปเฉยๆเลย ตามรูปข้างล่าง


เป็นไงครับสำหรับ แบบฝึกหัดแรก ถ้าใครเคยเขียน โปรแกรมมาก่อนคงไม่ยากและเห็นภาพชัดเจน แต่ถ้าใครยังไม่เห็นภาพ เดี๋ยวในบทต่อไปเรื่องเกี่ยวกับ messagebox คงจะเห็นภาพ และสามารถนำไปประยุกต์ใช้ได้มากขึ้นนะครับ


หากมีข้อสงสัย หรือว่าไม่สามารถทำตามได้ รบกวน Post คำถามมาข้างล่างเลยนะครับจะตอบกลับให้เร็วที่สุด ขอบคุณครับ


ถ้าใครยังไม่ได้อ่านตอนที่แล้ว สามารถกลับไปอ่านได้นะครับที่ #3 Hello World!!! Debug.Print in Excel VBA#1 VBA คืออะไร อะไรคือ VBA

วิธีการเตรียม Environment สำหรับเขียน VBA