Microsoft Excel มาพร้อมฟังก์ชันสำเร็จรูปมากมายที่ทำงานแทนเราได้ส่วนใหญ่ ในส่วนใหญ่ไม่ต้องการฟังก์ชันเพิ่มเติมนอกเหนือจากฟังก์ชันในตัว แต่ถ้าต้องการฟังก์ชันที่ไม่มีในตัว Excel ให้ทำอย่างไร?
Excel อนุญาตให้สร้าง Custom Excel Functions หรือ User Defined Functions ด้วย VBA สร้างฟังก์ชันที่มีฟังก์ชันการทำงานตามต้องการ และเข้าถึงในชีต Excel เป็นฟังก์ชันปกติด้วย "=" ตามด้วยชื่อฟังก์ชัน นี่คือขั้นตอนสร้าง Custom Excel Functions ด้วย VBA
สร้าง Custom Excel Functions
เนื่องจากใช้ VBA ต้องเปิดใช้งานแท็บ "Developer" ก่อน โดยค่าเริ่มต้นไม่เปิด เปิดชีต Excel คลิกปุ่ม Excel > "Excel Options" ติ๊กถูก "Show Developer tab in the Ribbon"

เปิด Visual Basic Editor: แท็บ Developer > ไอคอน "Visual Basic"

หรือใช้ลัดคีย์บอร์ด "Alt + F11" เปิด VBE ได้เลย ไม่ต้องเปิดแท็บ Developer ก็ได้
พร้อมสร้าง Custom Function แล้ว คลิกขวา "Microsoft Excel Objects" > Insert > Module

จะเปิดหน้าต่างว่างสำหรับเขียนโค้ด

ก่อนเขียนโค้ด ต้องเข้าใจ syntax สำหรับสร้าง Custom Excel Function:
Function myFunction (arguments) return type
myFunction = some_calculation
End Function
ไม่มีคำสั่ง 'Return' เหมือนภาษาโปรแกรมทั่วไป
ใส่โค้ดในหน้าต่างว่าง ตัวอย่างสร้างฟังก์ชัน "FeesCalculate" คำนวณ '8%' ของค่าที่ส่งเข้า ใช้ return type "Double" เพราะอาจเป็นทศนิยม โค้ดปฏิบัติตาม syntax VBA

บันทึกสมุดงาน Excel ด้วยนามสกุล '.xslm' เพื่อใช้ชีตพร้อม Macro หากไม่บันทึกเป็น .xslm จะเกิดข้อผิดพลาด

เสร็จแล้ว!
ตอนนี้ใช้ User Defined Function ในชีต Excel เป็นฟังก์ชันปกติด้วย "=" เริ่มพิมพ์ "=" ในเซลล์ จะแสดงฟังก์ชันที่สร้างพร้อมฟังก์ชันในตัว

ตัวอย่างการใช้งาน:

Excel Custom Functions ไม่สามารถเปลี่ยนแปลงสภาพแวดล้อม Excel ได้ จึงมีข้อจำกัด
ข้อจำกัดของ Custom Excel Functions
Custom Excel Functions ไม่สามารถ:
- แทรก จัดรูปแบบ หรือลบเซลล์บนสเปรดชีต
- เปลี่ยนค่าของเซลล์อื่น
- เพิ่มชื่อในสมุดงาน
- เปลี่ยนชื่อ ลบ ย้าย หรือเพิ่มชีตในสมุดงาน
ยังมีข้อจำกัดอื่นๆ อีกมาก ข้างต้นเป็นตัวอย่างบางส่วน
นี่คือขั้นตอนง่ายๆ ในการสร้าง Custom Excel Functions