Excel Visual Basic for Applications (VBA) เป็นภาษาการเขียนโปรแกรมที่มีประสิทธิภาพ VBA ช่วยให้คุณสามารถทำงานอัตโนมัติ สร้างฟังก์ชันแบบกำหนดเอง และปรับปรุงฟังก์ชันสเปรดชีตได้ หากคุณเริ่มต้นด้วย VBA การทำความเข้าใจคำศัพท์สำคัญ เช่น Macro, Module และ Procedure ถือเป็นสิ่งสำคัญ แนวคิดเหล่านี้เชื่อมโยงถึงกัน แต่มีจุดประสงค์ที่แตกต่างกัน
ในบทช่วยสอนนี้ เราจะพูดถึงคำศัพท์เฉพาะของ Excel VBA:มาโคร กับ โมดูล และ กระบวนการ เราจะแจกแจงรายละเอียดพร้อมคำอธิบาย ตัวอย่าง และเคล็ดลับที่นำไปใช้ได้จริงเพื่อช่วยคุณในการเริ่มต้น
หากต้องการดำเนินการต่อ คุณจะต้องใช้ Excel (เวอร์ชันใดก็ได้ตั้งแต่ปี 2007 เป็นต้นไป) โดยเปิดใช้งานแท็บนักพัฒนาซอฟต์แวร์
- หากมองไม่เห็น ให้ไปที่ไฟล์ แท็บ>> เลือก ตัวเลือก>> เลือก ปรับแต่ง Ribbon>> เลือก นักพัฒนาซอฟต์แวร์ ทางด้านขวา
1. มาโครคืออะไร?
แมโครเป็นจุดเริ่มต้นที่เป็นมิตรต่อผู้ใช้มากที่สุดใน VBA โดยพื้นฐานแล้วเป็นชุดคำสั่งที่บันทึกไว้หรือเป็นลายลักษณ์อักษรซึ่งทำให้งานซ้ำๆ ใน Excel เป็นแบบอัตโนมัติ สามารถสร้างมาโครได้โดยไม่ต้องมีความรู้ด้านการเขียนโปรแกรมเชิงลึกโดยใช้ Macro Recorder ของ Excel โดยจะบันทึกการกระทำของคุณ เช่น การจัดรูปแบบเซลล์หรือการแทรกสูตร และแปลงเป็นโค้ด VBA
ในทางปฏิบัติ เมื่อมีคนพูดว่า “ฉันบันทึกแมโคร” หรือ “ฉันเขียนแมโคร” พวกเขามักจะพูดถึงขั้นตอนย่อยที่จัดเก็บไว้ในโมดูล เครื่องบันทึกแมโครของ Excel จะสร้างขั้นตอนย่อยโดยอัตโนมัติ
ลักษณะสำคัญ: ป>
- วัตถุประสงค์: ทำงานอัตโนมัติเพื่อประหยัดเวลา ตัวอย่างเช่น มาโครสามารถจัดเรียงข้อมูล ใช้ตัวกรอง หรือสร้างรายงานได้ด้วยคลิกเดียว
- วิธีการสร้าง:
- บันทึกแล้ว: ใช้ Macro Recorder สำหรับงานง่ายๆ
- เขียน: แก้ไขหรือเขียนโค้ดด้วยตนเองในตัวแก้ไข VBA เพื่อตรรกะที่ซับซ้อนมากขึ้น
- ขอบเขต: โดยปกติแล้วมาโครจะถูกจัดเก็บไว้ในสมุดงานและสามารถเรียกใช้ได้จากปุ่ม ทางลัด หรือกล่องโต้ตอบมาโคร
- ข้อจำกัด: มาโครที่บันทึกไว้มักจะมีโค้ดที่ไม่จำเป็น (เช่น การเลือกเซลล์) และการอ้างอิงเซลล์อาจดูซับซ้อน ดังนั้นจึงมักจะถูกล้างข้อมูลด้วยตนเอง
มาโคร ≠ VBA: VBA เป็นภาษาโปรแกรม มาโครเป็นระบบอัตโนมัติที่รันได้ซึ่งสร้างโดยใช้ VBA (หรือบันทึกลงใน VBA)
ตัวอย่าง:การสร้างและการเรียกใช้มาโครอย่างง่าย
- ไปที่นักพัฒนาซอฟต์แวร์ แท็บ>> เลือก บันทึกมาโคร
- ตั้งชื่อเป็น ApplyFormat (ไม่มีการเว้นวรรค)>> กำหนดทางลัดหากต้องการ>> คลิก ตกลง

- ดำเนินการ:
- เลือกส่วนหัว
- ไปที่หน้าแรก แท็บ>> เลือก ตัวหนา
- ใช้ เติม สีและแบบอักษร สี
- หยุดการบันทึก:ไปที่นักพัฒนาซอฟต์แวร์ แท็บ>> คลิก หยุดการบันทึก

เบื้องหลัง Excel จะสร้างโค้ด VBA ดังนี้:
Sub ApplyFormat()
'
' ApplyFormat Macro
'
' Keyboard Shortcut: Ctrl+Shift+F
'
Range("A1:G1").Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
End Sub
- นี่คือ Sub (ย่อมาจาก Subroutine) ซึ่งเป็นประเภทของขั้นตอน

เรียกใช้มาโคร: ป>
- ไปที่นักพัฒนาซอฟต์แวร์ แท็บ>> เลือก มาโคร
- เลือก ใช้รูปแบบ>> เลือก เรียกใช้
- หรือกด Ctrl+Shift+F

ตอนนี้คุณสามารถสร้างและใช้มาโครเพื่อการทำงานอัตโนมัติที่รวดเร็วโดยไม่ต้องมีความเชี่ยวชาญในการเขียนโค้ด
2. ขั้นตอนคืออะไร?
ขั้นตอนการทำงานเป็นหน่วยพื้นฐานที่สุด เป็นบล็อกของโค้ด VBA ที่ทำงานเฉพาะเจาะจง ให้คิดว่าเป็นชุดคำสั่งที่ Excel ปฏิบัติตามเมื่อคุณเรียกใช้ ขั้นตอนคือจุดที่ตรรกะมีอยู่จริง คิดว่ามันเป็นฟังก์ชันหรือวิธีการในภาษาอื่น
ลักษณะสำคัญ: ป>
- ประเภท:
- ขั้นตอนย่อย (ย่อย): ดำเนินการแต่ไม่ส่งคืนค่า นี่คือสิ่งที่คนส่วนใหญ่หมายถึงโดยคำว่า "มาโคร" ในบริบท VBA เริ่มต้นด้วย Sub และลงท้ายด้วย End Sub
- ขั้นตอนการทำงาน (ฟังก์ชัน): ดำเนินการคำนวณและส่งกลับค่า เริ่มต้นด้วย Function และสิ้นสุดด้วย End Function มีประโยชน์สำหรับสูตรที่กำหนดเองในเวิร์กชีท
- วัตถุประสงค์: สร้างรหัสที่นำมาใช้ซ้ำได้ ขั้นตอนอาจรวมถึงการวนซ้ำ เงื่อนไข ตัวแปร และการโต้ตอบกับออบเจ็กต์ Excel (เช่น เซลล์หรือแผนภูมิ)
- ขอบเขต: สามารถเป็นแบบสาธารณะ (เข้าถึงได้จากทุกที่) หรือแบบส่วนตัว (จำกัดเฉพาะโมดูล)
- พารามิเตอร์: สามารถยอมรับอินพุต (อาร์กิวเมนต์) เพื่อความยืดหยุ่น
ตัวอย่าง:ขั้นตอนย่อยกับขั้นตอนการทำงาน
- ไปที่นักพัฒนาซอฟต์แวร์ แท็บ>> เลือก Visual Basic (หรือกด Alt+F11 )
- คลิก แทรก>> เลือก โมดูล
ขั้นตอนย่อย (เช่น มาโคร): ป>
Sub ClearFormatting()
Range("A1:G1").ClearFormats
MsgBox "Formatting is cleared"
End Sub
- เรียกใช้โค้ดเพื่อล้างการจัดรูปแบบ จากนั้นแสดงข้อความระบุว่า "ล้างการจัดรูปแบบแล้ว"

ขั้นตอนการทำงาน: ป>
Function Multiply(num1 As Integer, num2 As Integer) As Integer Multiply = num1 * num2 End Function
- ใช้ในเซลล์ เช่น =คูณ(E2,F2) เพื่อคูณค่า

ความสัมพันธ์กับมาโคร: แมโครทั้งหมดเป็นขั้นตอนย่อย แต่ไม่ใช่ทุกขั้นตอนย่อยจะถูกบันทึกแมโคร คุณสามารถเขียนขั้นตอนย่อยขั้นสูงที่นอกเหนือไปจากการบันทึกแบบธรรมดาได้
ใช้ขั้นตอนเมื่อคุณต้องการโค้ดที่มีโครงสร้างและนำมาใช้ซ้ำได้ แบ่งงานที่ซับซ้อนออกเป็นหลายขั้นตอนเพื่อองค์กรที่ดีขึ้น
3. โมดูลคืออะไร?
โมดูลคือคอนเทนเนอร์ที่เราจัดเก็บขั้นตอนตั้งแต่หนึ่งขั้นตอนขึ้นไป เป็นไฟล์ในตัวแก้ไข VBA ที่คุณเขียนและจัดระเบียบโค้ด VBA ของคุณ มันเหมือนกับโฟลเดอร์ที่จัดระเบียบโค้ดของคุณ ทำให้ง่ายต่อการจัดการและนำมาใช้ซ้ำ
ประเภทของโมดูล: ป>
- โมดูลมาตรฐาน: ประเภทที่พบบ่อยที่สุด ที่คุณเขียนโค้ดวัตถุประสงค์ทั่วไป
- สิ่งเหล่านี้ปรากฏใน VBA Project Explorer ของคุณเป็น “Module1”, “Module2” ฯลฯ
- เปิดตัวแก้ไข VBA>> คลิก แทรก>> เลือก โมดูล .
- โมดูลสมุดงาน (ThisWorkbook): เก็บโค้ดที่เชื่อมโยงกับเหตุการณ์ในสมุดงาน (เปิด ก่อนปิด ฯลฯ)
- ขั้นตอนกิจกรรมที่ตอบสนองต่อการกระทำ เช่น การเปิดหรือปิดสมุดงาน
- โมดูลแผ่นงาน (Sheet1, Sheet2 ฯลฯ): เหล่านี้เป็นโมดูลพิเศษที่แนบมากับชีตเฉพาะ
- ประกอบด้วยขั้นตอนเหตุการณ์ที่ตอบสนองต่อการกระทำ เช่น การคลิกแผ่นงาน และโค้ดจะทำงานเมื่อแผ่นงานมีการเปลี่ยนแปลง
- โมดูลคลาส: โมดูลเหล่านี้เป็นโมดูลขั้นสูงที่ใช้ในการสร้างออบเจ็กต์แบบกำหนดเอง แต่คุณไม่จำเป็นต้องใช้เมื่อเริ่มต้น ใช้สำหรับการเขียนโปรแกรมเชิงวัตถุ เช่น การสร้างคลาสแบบกำหนดเอง
- โมดูลแบบฟอร์มผู้ใช้: สำหรับการออกแบบกล่องโต้ตอบแบบกำหนดเอง

ตัวอย่าง:การทำงานกับโมดูล
- ไปที่นักพัฒนาซอฟต์แวร์ แท็บ>> เลือก Visual Basic (หรือกด Alt+F11 )
- ใน Project Explorer (บานหน้าต่างด้านซ้าย)
- คลิกขวาที่สมุดงานของคุณ>> คลิก แทรก>> เลือก โมดูล

- คัดลอกและวางขั้นตอนลงไป:
Sub FormatSalesReport()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("A1:H1").Font.Bold = True
ws.Range("A1:H" & lastRow).Borders.LineStyle = xlContinuous
Dim i As Long
For i = 2 To lastRow
If ws.Cells(i, "H").Value > 100 Then ws.Cells(i, "H").Interior.Color = RGB(0, 255, 0)
Next i
End Sub
- โค้ด VBA นี้จัดรูปแบบข้อมูลและเน้นค่าที่มากกว่า 100 ในคอลัมน์ H
- บันทึกสมุดงาน
- ขณะนี้ ขั้นตอนนี้สามารถใช้งานได้ในรูปแบบมาโคร
- กด F5 หรือคลิกเรียกใช้

ความสัมพันธ์กับมาโครและขั้นตอน: ป>
- โมดูล ระงับ ขั้นตอน
- มาโครคือขั้นตอนย่อย เก็บไว้ในโมดูล
- มาโครที่ไม่มีโมดูล? ไม่สามารถทำได้ เนื่องจากโค้ด VBA ทั้งหมดอยู่ภายในโมดูลบางประเภท
เมื่อใดควรใช้: สำหรับโครงการ VBA ใด ๆ เริ่มต้นด้วยหนึ่งโมดูลสำหรับงานเล็กๆ ใช้หลายอันสำหรับอันที่ใหญ่กว่าเพื่อหลีกเลี่ยงความยุ่งเหยิง
มันเข้ากันได้อย่างไร:มาโคร → ขั้นตอน → โมดูล
แมโครเป็นคำที่ผู้ใช้เผชิญสำหรับขั้นตอนย่อย ขั้นตอนคือการบล็อกโค้ด ขั้นตอนกลุ่มโมดูลสำหรับองค์กร
ตัวอย่างขั้นตอนการทำงาน: ป>
- บันทึกมาโคร → สร้างขั้นตอนย่อยในโมดูลใหม่ (มักจะเป็น “Module1”)
- แก้ไขขั้นตอนเพื่อปรับแต่ง
- เพิ่มขั้นตอนเพิ่มเติมให้กับโมดูลเดียวกันหรือสร้างโมดูลใหม่

แนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับ
- แบบแผนการตั้งชื่อ: ใช้ชื่อที่สื่อความหมาย เช่น Sub CalculateTotalSales() แทน Sub Macro1() หลีกเลี่ยงช่องว่าง ใช้ CamelCase
- การจัดการข้อผิดพลาด: เพิ่ม เมื่อเกิดข้อผิดพลาด ดำเนินการต่อถัดไป หรือ เมื่อเกิดข้อผิดพลาด GoTo ErrorHandler ในขั้นตอนต่างๆ เพื่อให้มีความแข็งแกร่งยิ่งขึ้น
- ความปลอดภัย :มาโครสามารถเรียกใช้โค้ดได้ ดังนั้นให้เปิดใช้งานจากแหล่งที่เชื่อถือได้เท่านั้น (ไฟล์>> ตัวเลือก>> ศูนย์ความเชื่อถือ>> การตั้งค่ามาโคร ).
- การแก้ไขจุดบกพร่อง: ใช้ F8 เพื่ออ่านโค้ดในโปรแกรมแก้ไข VBA
- เคล็ดลับขั้นสูง: ส่งออกโมดูล (ไฟล์ .bas) เพื่อใช้โค้ดซ้ำในสมุดงาน
- ข้อผิดพลาดทั่วไป: อย่าสับสนระหว่างแมโคร Excel กับสคริปต์ Office (ที่ใช้ JavaScript ใน Excel เวอร์ชันใหม่กว่า) VBA มีประสิทธิภาพมากกว่าสำหรับการทำงานอัตโนมัติบนเดสก์ท็อป
บทสรุป
เมื่อทำตามบทช่วยสอนนี้ คุณจะเข้าใจคำศัพท์เฉพาะของ Excel VBA ได้:แมโคร กับ โมดูล และ กระบวนการ การทำความเข้าใจข้อกำหนดเหล่านี้จะช่วยให้คุณใช้ VBA ได้อย่างมีประสิทธิภาพ มันจะช่วยคุณนำทางเอกสาร VBA สื่อสารกับผู้ใช้ Excel คนอื่นๆ และจัดระเบียบโค้ดของคุณได้อย่างมีประสิทธิภาพมากขึ้น เริ่มต้นด้วยการบันทึกมาโครเพื่อดูขั้นตอนการทำงาน จากนั้นจัดระเบียบเป็นโมดูลเมื่อโครงการของคุณเติบโตขึ้น ฝึกฝนโดยทำให้งานง่ายๆ เป็นอัตโนมัติในสเปรดชีตของคุณเอง แล้วคุณจะเห็นพลังของ VBA อย่างรวดเร็ว
รับแบบฝึกหัด Excel ขั้นสูงพร้อมโซลูชันฟรี!