บทที่ 2 การเขียน VBA

ความสามารถหนึ่งของโปรแกรมเอ็กเซลล์ที่สามารถพัฒนาให้โปรแกรมสามารถทำงานเพื่อตอบสนองความต้องการของผู้ใช้ได้มากกว่าเดิมก็คือ ความสามารถในการพัฒนาโปรแกรมด้วยการบันทึกการทำงาน(มาโคร) หรือการเขียนรหัสคำสั่ง Visual Basic for Application (VBA) เพื่อให้โปรแกรมสามารถทำงานได้มากกว่าความสามารถพื้นฐานของโปรแกรม หรือสามารถทำงานได้ซับซ้อนขึ้น

องค์ประกอบของหน้าต่าง Visual Basic Editor
ในส่วนนี้ จะได้ทำเข้าใจเบื้องต้นถึงองค์ประกอบที่สำคัญในการเขียน รหัสคำสั่ง VBA ก็คือ ส่วนของหน้า Visual Basic Editor ซึ่งเป็นหน้าต่างหลักที่ใช้ในการสร้าง การแก้ไข การสร้างฟอร์มต่างๆ การกำหนดคุณสมบัติของวัตถุ
ในการสร้างรหัสคำสั่ง VBA ในโปรแกรมเอ็กเซลล์นั้น จะกระทำในหน้าต่าง Visual Basic Editor ซึ่งการเรียกหน้าต่างออกมานั้น ทำได้ดังนี้
1. คลิกที่เมนูบาร์เลือก Tools>Macro>Visual Basic Editor
2. จากนั้นหน้าต่าง Visual Basic Editor จะปรากฏขึ้น


รูปที่ 2.1


รูปที่ 2.2
1. เมนูบาร์
2. Project Explorer คือ หน้าต่างของโปรเจก
3. Properties Window คือ หน้าต่างคุณสมบัติของอ๊อปเจกต่างๆ
4. คือพื้นที่สำหรับเขียนรหัสคำสั่ง
5. อ๊อปเจกของสมุดงาน
6. ฟอร์มต่างๆ ที่สร้างขึ้น
7. Module คือ ที่เก็บรหัสคำสั่งต่างๆที่เขียนขึ้นมา
8. ปุ่ม Design mode
9. ปุ่มใช้แสดงหน้าต่าง Project Explorer
10. ปุ่มใช้แสดงหน้าต่าง Properties Window
11. ปุ่มใช้แสดงหน้าต่าง Object Browser
12. ปุ่ม ToolBox คือ กล่องเครื่องต่างๆ ที่ใช้ในการสร้างองค์ประกอบของฟอร์ม
13. ปุ่ม DropDownList ของ Object
14. ปุ่ม DropDownList ของ Procedure


การสร้างรหัสคำสั่ง
การสร้างรหัสคำสั่งสามารถทำได้ 2 วิธี
1. สร้างโดยการบันทึกการทำงาน (มาโคร)
2. การสร้างรหัสคำสั่งด้วยการเขียน VBA
1.สร้างโดยการบันทึกการทำงาน หรือที่เรียกว่า การบันทึกมาโคร
การใช้งานโปรแกรมเอ็กเซลล์ในบางครั้งผู้ใช้อาจต้องทำงานบางอย่างที่ซ้ำไปซ้ำมา หรือมีลักษณะการทำงานแบบวนรอบ ดังนั้นการทำงานแบบ manual ที่ซ้ำไปซ้ำมา อาจก่อให้เกิดความล่าช้า ความเบื่อหน่าย และอาจก่อให้เกิดความผิดพลาด ที่เรียกว่า human error ดังนั้น การสร้างมาโคร หรือการบันทึกการทำงานที่ทำซ้ำไปซ้ำมา ก็จะช่วยให้ปัญหาต่างๆ เหล่านั้นลดน้อยลงไป
การเขียนมาโครนั้น แท้จริงแล้วก็คือการสร้างรหัสคำสั่ง นั่นเอง เพราะเนื้อในของมาโครก็คือรหัสคำสั่ง VBA แต่เป็นการสร้างรหัสคำสั่งที่ไม่ต้องเขียนคำสั่ง เพียงแต่ใช้การบันทึกการทำงาน จากนั้นโปรแกรมก็จะแปลงเป็นรหัสคำสั่งให้อัตโนมัติ ซึ่งมีความสะดวก รวดเร็ว และเหมาะกับผู้ใช้ที่ไม่สามารถเขียนโปรแกรมคำสั่งได้ แต่ก็มีข้อจำกัดในเรื่องของความยืดหยุ่น ความซับซ้อน เมื่อผู้ใช้ต้องการให้มีเงื่อนไขต่างๆ ในการประมวลผล
การบันทึกมาโครสามารถทำได้ดังนี้
1.Tools>Macro>Record New Macro…

รูปที่ 2.3
2.ไดอะล็อก Record Macro จะปรากฏขึ้น ให้ทำการตั้งชื่อมาโครในช่อง Macro name:

รูปที่ 2.4
3. ดำเนินการบันทึก ด้วยการทำงานใดๆ บนแผ่นงาน (work sheet)
4. หยุดบันทึกการทำงาน
ตัวอย่างที่ 1 มีไฟล์ฐานข้อมูลในโปรแกรมเอ็กเซลล์ไฟล์หนึ่ง ที่ผู้ปฏิบัติงานต้องการเน้นข้อมูลที่มีความสนใจ โดยการทำให้อักษรเป็นตัวหนา ตัวอักษรเป็นสีแดง และใส่สีให้เซลล์เป็นสีเหลือง
จากโจทย์จะเห็นว่า แต่ละข้อมูลจำเป็นต้องทำการคลิกเลือกคุณสมบัติทั้งหมด 3 ครั้ง ต่อ 1 เซลล์ เพื่อเลือกคุณสมบัติต่างๆ ถ้าฐานข้อมูลมีจำนวนน้อยๆ ก็พอที่จะทำได้ แต่ถ้ามีฐานข้อมูลจำนวนมากๆ การทำเช่นนี้คงไม่ดีแน่ ด้วยเหตุนี้ การบันทึกมาโครจึงมีความจำเป็นที่ต้องนำมาใช้ เพื่อความสะดวกรวดเร็วในการทำงาน

รูปที่ 2.5

วิธีทำ
1. คลิกที่เมนูบาร์เลือก Tools>Macro>Record New Macro… ดังรูป

รูปที่ 2.6
2. จะปรากฏไดอะลอก Record Macro ขึ้นมา ที่ช่อง Macro name ให้ตั้งชื่อมาโคร ตามที่ต้องการ หรือจะใช้ชื่อ Macro1 ก็ได้ แล้วกดปุ่ม OK เพื่อเริ่มต้นการบันทึกมาโคร

รูปที่ 2.7
3. ทำการบันทึกด้วยการคลิกที่ปุ่ม ตัวอักษรหนา สีของเซลล์ให้เลือกสีเหลือง และสีของตัวอักษรให้เลือกสีแดง ดังรูป

รูปที่ 2.8
4.หยุดการบันทึกมาโคร ด้วยการคลิกที่เมนูบาร์เลือก Tools>Macro>Stop Recording ดังรูป

รูปที่ 2.9
5. เมื่อหยุดการบันทึกแล้ว รหัสคำสั่ง VBA จะถูกสร้างขึ้นมาในหน้าต่าง Visual Basic Editor ให้คลิกเลือกที่เมนูบาร์เลือก Tools>Macro> Visual Basic Editor ดังรูป เพื่อเข้าไปดูรหัสคำสั่ง

รูปที่ 2.10
6.เมื่อหน้าต่าง Visual Basic Editor ปรากฏขึ้น ให้สั่งเกตุทางด้านซ้ายของหน้าต่างจะมีหน้าต่าง Project Explorer ให้คลิกที่โฟลเดอร์ Modules >Module1 รหัสคำสั่ง VBA ที่ถูกสร้างจากการบันทึก็จะปรากฏขึ้นมาดังรูป

รูปที่ 2.11
7.เมื่อได้บันทึกมาโครตามที่ต้องการแล้ว ก็มาถึงขั้นตอนการเรียกมาโครมาใช้งาน โดยการกลับไปที่หน้าต่างโปรแกรมเอ็กเซลล์ ในการเรียกมาโครขึ้นมาใช้งานนั้นมีวิธีการเรียกใช้ อยู่ 2 วิธีคือ
วิธีที่ 1 คลิกเลือกเซลล์หรือช่วงของเซลล์ที่ต้องการใช้มาโคร แล้วไปที่เมนูบาร์คลิกเลือก Tools>Macro>Macros…จากนั้นไดอะล็อก Macro จะปรากฏขึ้นมาให้เลือกมาโครที่ต้องการ แล้วคลิกที่ปุ่ม Run มาโครที่บันทึกไว้ก็จะทำงานทันที ดังรูป

รูปที่ 2.12

รูปที่ 2.13
วิธีที่ 2 เป็นวิธีกำหนดมาโครให้กับวัตถุ (Object) ต่างๆ เช่น รูปภาพ ปุ่ม ไอคอน เป็นต้น จากตัวอย่าง จะเลือกใส่รูปหน้ายิ้มจาก AutoShapes นำมาวาดลงบนแผ่นงาน จากนั้นให้คลิกขวาที่รูปเพื่อกำหนดมาโครให้กับรูป จากนั้นไดอะล็อก Assign Macro จะปรากฏขึ้นให้คลิกเลือกชื่อมาโครที่ต้องการให้ทำงาน แล้วกดปุ่ม OK

รูปที 2.14

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

รูปที่ 2.16


2. การสร้างรหัสคำสั่งด้วยการเขียน VBA
การสร้างรหัสคำสั่งด้วยการเขียน VBA เป็นวิธีที่ช่วยให้ผู้ใช้สามารถพัฒนาโปรแกรมให้สามารถตอบสนองให้โปรแกรมทำงานได้ตามต้องการ และมีความยืดหยุ่น และซับซ้อนได้มากกว่าการบันทึกมาโคร โดยมีวิธีการดังนี้
1.เปิดหน้าต่าง Visual Basic Editor ขึ้นมา โดยการคลิกที่เมนูบาร์เลือก Tools>Macro>Visual Basic Editor ดังรูป

รูปที่ 2.17
2.เมื่อหน้าต่าง Visual Basic Editor ปรากฏขึ้นมา ให้คลิกเลือก Insert>Module จะมี Module1 ปรากฏขึ้นมา ให้คลิกที่เมนูบาร์อีกครั้ง คลิกเลือก Insert>Procedure..จะมีไดอะล็อก Add Procedure ปรากฏขึ้นมา ให้ตั้งชื่อโปรแกรมในช่อง Name ซึ่งในตัวอย่างตั้งชื่อเป็น EXAMPLE2

รูปที่ 2.18

รูปที่ 2.19

รูปที่ 2.20
3.ให้พิมพ์คำสั่งต่อไปนี้ลงในช่องว่าง ระหว่าง Public Sub EXAMPLE2() กับ End Sub
Public Sub EXAMPLE2()
Selection.Interior.ColorIndex = 6
MsgBox (Selection)
End Sub

รูปที่ 2.21
4.กลับไปที่หน้าต่างเวิร์คชีทเอ็กเซลล์ เพื่อทดสอบโปรแกรม ด้วยการสร้างวัตถุ เช่น รูปหน้ายิ้ม ปุ่ม หรือไอคอน ต่างๆ แล้วกำหนดโปรแกรมให้กับวัตถุ ซึ่งมีวิธีการเหมือนกับตัวอย่างที่ 1 จากนั้นลองคลิกเลือกชื่อผลิตภัณฑ์ในข้อมูลตัวอย่าง แล้วกดที่รูปหน้ายิ้ม จะเห็นว่าเซลล์ที่คลิกเลือกจะมีสีที่เซลล์ และมีไดอะล็อกแสดงข้อความที่อยู่ในเซลล์ที่เลือก

รูปที่ 2.22


การเรียกใช้โปรแกรม
โปรแกรมหรือมาโครต่างๆ ที่ได้สร้างไว้ สามารถเรียกขึ้นมาใช้ หรือทดสอบได้ โดยมีวิธีการดังนี้
1.วิธีใช้ปุ่มคำสั่ง Run
2.วิธีการกำหนดโปรแกรมให้กับวัตถุ เช่น รูปภาพ ปุ่ม หรือไอคอนต่างๆ
3.วิธีการสร้างเป็นคำสั่งในเมนูบาร์ (Menu Bar)
4.วิธีการสร้างทูลบาร์ขึ้นมาใหม่ (Tool Bar)
5.วิธีการสร้างคีย์ลัด (Shotcut Key)
1.วิธีใช้ปุ่มคำสั่ง Run
การเรียกใช้โปรแกรมด้วยการใช้ปุ่มคำสั่ง Run ยังสามารถแยกออกเป็น 2 วิธี คือ
1.1 ใช้ปุ่ม Run ที่หน้าต่างเวิร์คชีทเอ็กเซลล์
โดยที่เมนูบาร์คลิกเลือก Tools>Macro>Macros จะมีไดอะล็อก Macro ขึ้นมาให้กดปุ่ม Run

รูปที่ 2.23
1.2 ใช้ปุ่ม Run ที่หน้าต่าง Visual Basic Editor เมื่อต้องการเรียกใช้โปรแกรมใด ให้เอาเมาส์ไปคลิกในพื้นที่ส่วนของโปรแกรมที่ต้องการใช้งาน จากนั้นให้คลิกที่ปุ่ม Run Sub/UserForm ดังรูป

รูปที่ 2.24

2.วิธีการกำหนดโปรแกรมให้กับวัตถุ
โดยการกำหนดโปรแกรมให้กับวัตถุ เช่น รูปภาพ ปุ่ม หรือไอคอนต่างๆ ตัวอย่างเช่น กำหนดโปรแกรม ชื่อ Program1 ให้กับรูปหน้ายิ้ม
หลังจากที่สร้างโปรแกรมเสร็จแล้ว ให้กลับไปที่หน้าเวิร์คชีท เพื่อใส่รูปหน้ายิ้ม จากนั้นให้คลิกขวาที่รูป จะมีเมนูขึ้นมา ให้เลือกคำสั่ง Assign Macro ก็จะมีไดอะล็อก Assign Macro ขึ้นมา ให้เลือกโปรแกรมที่ต้องการใช้ แล้วกดปุ่ม OK

รูปที่ 2.25
3.วิธีการสร้างเป็นคำสั่งในเมนูบาร์ (Menu Bar)
อีกวิธีหนึ่งสำหรับการเรียกใช้งานโปรแกรมหรือมาโครที่สร้างไว้ ก็คือ สร้างเป็นคำสั่งในเมนูบาร์ ซึ่งในตัวอย่างนี้ จะสร้างจะเรียกใช้โปรแกรม Program1 โดยการสร้างเป็นคำสั่งแทรกไว้ในเมนู Tools ดังนี้

รูปที่ 2.26
1.คลิกเลือกTools
2.คลิกเลือก Customize…
3.เมื่อไดอะล็อก Customize เปิดขึ้นมาให้คลิกเลือกแท็บ Commands
4.ในช่อง Categories ให้คลิกเลือก Tools
5.ที่ช่อง Commands ให้คลิกเลือก Custom

รูปที่ 2.27
6.คลิกเม้าส์ที่ Custom ค้างเอาไว้แล้วลากไปที่เมนู Tools
7.จากตำแหน่ง Tools ให้ลากเม้าส์ลงมาในตำแหน่งที่ต้องการ
8.ในตัวอย่างนี้ จะลากเม้าส์วางไว้ใต้คำสั่ง Macro จากนั้นให้ปล่อยเม้าส์จะได้ Custom มาอยู่ในเมนแล้ว

รูปที่ 2.28
9.คลิกขวาที่ Custom เพื่อทำการเปลี่ยนชื่อ
10.จะมีเมนูปรากฏขึ้นให้คลิกที่ Name: เพื่อเปลี่ยนชื่อเป็น Program1
11.จากนั้นคลิกเลือกที่คำสั่ง Assign Macro…
12.ไดอะล็อก Assign Macro จะปรากฏขึ้นให้คลิกเลือกโปรแกรมที่ได้สร้างไว้ ซึ่งในตัวอย่างนี้ให้เลือก โปรแกรม Program1 แล้วกดปุ่ม OK

รูปที่ 2.29

4.วิธีการสร้างเป็นทูลบาร์ขึ้นมาใหม่ (Tool Bar)
การใช้วิธีสร้างเป็นคำสั่งในเมนูบาร์ดังวิธีที่ผ่านมา ในบางครั้งอาจไม่สะดวกนัก หากต้องมีการเรียกใช้โปรแกรมบ่อยๆ อีกทั้งการไปแทรกตัวอยู่กับคำสั่งอื่นๆ ก็ทำให้เมนูบาร์เกิดความไม่เป็นระเบียบเท่าที่ควร ดังนั้นการสร้างทูลบาร์ขึ้นมาใหม่ เพื่อรองรับโปรแกรมต่างๆที่ได้สร้างขึ้นมานั้นอาจทำให้การเรียกใช้โปรแกรมต่างๆ สะดวกรวดเร็ว และเป็นระเบียบมากขึ้น ซึ่งการสร้างทูลบาร์ขึ้นมาใหม่ทำได้ดังนี้


รูปที่ 2.30
1.ที่เมนูบาร์ให้คลิก Tools>Customize
2.เมื่อไดอะล็อก Customize ปรากฏให้คลิกแท็ป Toolbars
3.คลิกปุ่ม New… เพื่อสร้างทูลบาร์ใหม่
4.ไดอะล็อก New Toolbar จะปรากฏขึ้น ให้ตั้งชื่อให้กับทูลบาร์ ในตัวอย่างนี้ตั้งชื่อเป็น MyProgram จากนั้นให้คลิกปุ่ม OK
5.จะได้ทูลบาร์ใหม่ขึ้นมา

รูปที่ 2.31

6.คลิกที่แท็ป Commands
7.ในช่อง Categories ให้เลือก Tools
8.ในช่อง Commands ให้เลือกปุ่ม Custom แล้วลากไปไว้ที่ทูลบาร์ใหม่
9.จะเห็นว่าที่ทูลบาร์ใหม่มีปุ่มคำสั่งขึ้นมาแล้ว ให้คลิกขวาที่ปุ่ม Custom
10.จะปรากฏเมนูขึ้นมาให้เลือกที่ Name เพื่อทำการตั้งชื่อให้ปุ่มเป็น Program1
11.จากนั้นให้คลิกเลือกคำสั่ง Assign Macro.. จะมีไดอะล็อกขึ้นมาให้คลิกเลือกโปรแกรม Program1

รูปที่ 2.32

รูปที่ 2.33

12. เมื่อได้กำหนดโปรแกรมให้กับปุ่มแล้ว ให้คลิกซ้ายที่ทูลบาร์ค้างเอาไว้ แล้วลากไปไว้ที่แถบทูลบาร์ด้านบน

5.วิธีการสร้างคีย์ลัด (Shotcut Key)
การเรียกใช้โปรแกรมอีกวิธีหนึ่งคือ การสร้างคีย์ลัด ด้วยการกดปุ่ม Ctrl+ปุ่มอักษร

รูปที่ 2.34

1.ที่เมนูให้คลิก Tools>Macro>Macros..จะปรากฏไดอะล็อก Macro ขึ้นมา ให้เลือกโปรแกรมที่ต้องการสร้างคีย์ลัด ในตัวอย่างนี้เลือกโปรแกรม Program1
2.จากนั้นให้เลือกปุ่ม Options..ก็จะมีไดอะล็อก Macro Options ปรากฏขึ้น
3.กำหนดอักษรที่จะใช้ในการเรียกโปรแกรม
4.ในช่อง Description: ให้พิมพ์ประโยคที่ใช้อธิบายความหมายของโปรแกรม เสร็จแล้วให้คลิกที่ปุ่ม OK ก็จะได้คีย์ลัดสำหรับเรียกใช้โปรแกรมแล้ว

การลบมาโคร
การลบมาโครหรือโปรแกรม VBA ที่ไม่ต้องการใช้งาน สามารถทำได้ 2 วิธี คือ
1.ลบโดยผ่านไดอะล็อก Macros
1. ที่เมนูบาร์ให้คลิกเลือก Tools>Macro>Macros

รูปที่ 2.35

2.ไดอะล็อก Macro จะปรากฏขึ้นมา ให้คลิกเลือกชื่อมาโครหรือโปรแกรมที่ต้องการลบ จากนั้นให้คลิกปุ่ม Delete จากรูปตัวอย่าง ต้องการลบมาโครที่ชื่อ Program3

รูปที่ 2.36

2.ลบมาโครหรือโปรแกรมโดยเข้าไปลบที่หน้าต่าง Visual Basic Editor
1. ที่เมนูบาร์ให้คลิกเลือก Tools>Macro>Visual Basic Editor

รูปที่ 2.37

2.เมื่อเข้าสู่หน้าต่าง Visual Basic Editor แล้ว ให้เลือกโปรแกรมที่ต้องการลบโดยการคลิกลากส่วนของโปรแกรม แล้วคลิกขวา เพื่อเลือกคำสั่ง Cut โปรแกรมก็จะถูกลบทันที

รูปที่ 2.38

การลบโมดูล
โมดูล Module เป็นที่เก็บมาโคร หรือโปรแกรมที่ได้เขียนไว้ ซึ่งอาจมีหลายโปรแกรมที่เขียนเก็บไว้ เช่น Module1 เก็บโปรแกรมไว้ 3 โปรแกรม ดังนั้นการลบ Module1 ก็เท่ากับได้ลบโปรแกรมทั้งหมดในโมดูลไปด้วย ดังนั้นก่อนการลบโมดูลแต่ละครั้งต้องตรวจสอบให้ถี่ถ้วนก่อน
การลบโมดูลนั้นสามารถทำได้ดังนี้
1. เข้าหน้าต่าง Visual Basic Editor ด้วยการคลิกเลือก Tools>Macro>Visual Basic Editor
2. เมื่อเข้าสู่หน้าต่าง Visual Basic Editor แล้ว ให้คลิกขวาเลือกโมดูลที่ต้องการลบ แล้วเลือก คำสั่ง Remove Module..

รูปที่ 2.39


รูปที่ 2.40

3.เมื่อคลิกเลือกคำสั่ง Remove Module1 จะปรากฏไดอะล็อกขึ้นมา
ถ้าเลือกปุ่ม Yes คือ ลบโมดูลโดยมีการส่งออกโมดูลไปเก็บไว้ที่อื่น
ถ้าเลือกปุ่ม No คือ ลบโมดูลโดยไม่มีการส่งออกโมดูลไปเก็บไว้ที่อื่น


การหยุดโปรแกรม
กรณีต้องการหยุดโปรแกรมเนื่องจากโปรแกรมทำงานไม่ออกจากลูป หรือต้องการหยุดการทำงาน หรือหยุดเพื่อดูค่าของตัวแปรต่างๆ สามารถทำได้โดยกดปุ่ม control+break ในขณะโปรแกรมกำลังทำงาน
Continue หมายถึงให้โปรแกรมทำงานต่อไป
End หมายถึง ให้โปรแกรมจบการทำงาน
Debug หมายถึง ให้โปรแกรมแสดงคำสั่ง Source code
Help หมายถึง ส่วนให้ความช่วยเหลือ


รูปที่ 2.41

การป้องกัน มาโคร enable and disable macro
ถึงแม้ว่า การเขียนคำสั่ง VBA หรือการสร้างมาโคร จะมีประโยชน์ต่อการพัฒนาการทำงานของโปรแกรมก็ตาม แต่อีกด้านหนึ่ง การเปิดใช้ความสามารถของคำสั่ง ก็เป็นการเปิดช่องให้ ไวรัสต่างๆ ที่เขียนด้วยคำสั่ง VBA เข้ามาก่อกวนหรือทำอันตรายกับเครื่องคอมพิวเตอร์ หรือไฟล์งานที่เราได้ทำไว้ ได้เหมือนกัน ดังนั้น การป้องกันการทำงานของคำสั่ง VBA หรือมาโคร ก็เป็นเรื่องสำคัญที่ผู้ใช้งานจำเป็นต้องทราบเพื่อหาทางป้องกัน ในโปรแกรมเอ็กเซลล์สามารถป้องกันการทำงานของรหัสคำสั่ง VBA หรือมาโครไม่ให้ทำงานได้โดยการกำหนดค่าดังนี้
1.คลิกที่เมนูบาร์ Tool>Options

รูปที่ 2.42

2.เลือกแท็บ Security>คลิกที่ปุ่ม Macro Security…

รูปที่ 2.43

3.คลิกเลือกที่แท็บ Security Level จะมีทางเลือกของระดับความปลอดภัย 4 ระดับ ให้เลือก คือ
1.Very High เป็นระดับสูงสุด คือ ให้มาโครที่อยู่ในแหล่งที่เชื่อถือได้เท่านั้นทำงานได้
2.High เป็นระดับสูง จะให้มาโครที่เป็น Signed macro จากแหล่งที่เชื่อถือได้เท่านั้นที่สามารถทำงานได้
3.Medium เป็นระดับปานกลาง ซึ่งผู้ใช้สามารถเลือกให้มาโครไหนทำงานได้ (Enable Macros) หรือไม่ทำงานก็ได้ (Disable Macros)
4.Low ระดับต่ำสุดคือ ไม่มีการป้องการมาโคร จะใช้ก็ต่อเมื่อต้องการสแกนไวรัส หรือติดตั้งโปรแกรมใหม่ เท่านั้น
ในการกำหนดระดับความปลอดภัยในเครื่องนั้น ขอแนะนำว่า ไม่ควรต่ำกว่าระดับ Medium