บทนำ
การสร้างฟอร์มที่ล้างตัวเองด้วย VBA และ Named Ranges ใน Excel ช่วยลดความซับซ้อนของงานป้อนข้อมูลและเพิ่มประสิทธิภาพ ฟอร์มจะล้างฟิลด์ป้อนข้อมูลอัตโนมัติหลังจากส่งข้อมูล เหมาะสำหรับสถานการณ์ป้อนข้อมูลที่ต้องใส่หลายเรคคอร์ดติดต่อกัน
ในบทช่วยสอนนี้ จะแนะนำวิธีสร้างฟอร์มล้างข้อมูลอัตโนมัติด้วย VBA และ Named Ranges
มาสร้างฟอร์มข้อมูลพนักงานง่ายๆ ที่รับข้อมูล บันทึกลงชีทฐานข้อมูล และล้างฟอร์มอัตโนมัติหลังส่ง
ขั้นตอนที่ 1: ตั้งค่าโครงสร้างชีท
- เปิดสมุดงาน Excel ใหม่
- สร้างเลย์เอาต์ฟอร์ม
- เปลี่ยนชื่อ Sheet1 เป็น "Form"
- สร้างเลย์เอาต์ดังนี้บนชีท Form
- ข้างแต่ละ Label ให้เซลล์ว่าง (B2, B3, B4, B5) สำหรับป้อนข้อมูล
ตั้งค่าชีทฐานข้อมูล:
- แทรกชีทใหม่ เปลี่ยนชื่อเป็น "Database"
- สร้างหัวคอลัมน์แถวที่ 1:
- Name
- Department
- Salary
- Start Date
- Entry Date
ขั้นตอนที่ 2: สร้าง Named Ranges
Named Ranges ทำให้อ้างอิงเซลล์ใน VBA ง่ายและชัดเจน เราจะสร้าง Named Ranges สำหรับทุก Input ของฟอร์ม
- เลือกเซลล์ B2
- ใน Name Box (ซ้าย Formula Bar) พิมพ์ Name
- กด Enter
- ทำซ้ำสำหรับเซลล์อื่นๆ:
- B3: ตั้งชื่อ Department
- B4: ตั้งชื่อ Salary
- B5: ตั้งชื่อ StartDate
ตรวจสอบ Named Ranges:
- ไปที่แท็บ Formulas > Name Manager หรือกด Ctrl+F3
- ตรวจสอบ Named Ranges ทั้งหมดสร้างถูกต้อง
- เลือก Close
ขั้นตอนที่ 3: สร้างปุ่มฟอร์ม
เพิ่มปุ่ม Submit:
- ไปที่ชีท Form
- ไปที่แท็บ Developer > Insert > จาก Form Controls > เลือก Button
- วาดปุ่มในเซลล์
- เมื่อถาม ชื่อ Macro ว่า SubmitandClearForm
- คลิก OK
- คลิกขวาปุ่ม > Edit Text
- เปลี่ยนเป็น Submit and Clear Form
เพิ่มปุ่ม Clear:
- แทรกปุ่มอีกอัน
- ชื่อ Macro ClearForm
- เปลี่ยนข้อความปุ่มเป็น Clear Form
หมายเหตุ: หากไม่เห็นแท็บ Developer ให้เปิดผ่าน File → Options → Customize Ribbon → チェック Developer
ขั้นตอนที่ 4: เขียนโค้ด VBA
- ไปที่แท็บ Developer > Visual Basic
- จากเมนู คลิก Insert > Module
- คัดลอก-วางโค้ด VBA ดังนี้
VBA Code สำหรับ SubmitForm:
Sub SubmitandClearForm()
Dim ws As Worksheet
Dim dbSheet As Worksheet
Dim lastRow As Long
Dim formValid As Boolean
' Set worksheet references
Set ws = ThisWorkbook.Sheets("Form")
Set dbSheet = ThisWorkbook.Sheets("Database")
' หาแถวว่างถัดไปในฐานข้อมูล
lastRow = dbSheet.Cells(dbSheet.Rows.Count, 1).End(xlUp).Row + 1
' คัดลอกข้อมูลจากฟอร์มไปฐานข้อมูล
dbSheet.Cells(lastRow, 1).Value = Range("Name").Value
dbSheet.Cells(lastRow, 2).Value = Range("Department").Value
dbSheet.Cells(lastRow, 3).Value = Range("Salary").Value
dbSheet.Cells(lastRow, 4).Value = Range("StartDate").Value
dbSheet.Cells(lastRow, 5).Value = Now() ' Timestamp การบันทึก
' ล้างฟอร์ม
ClearForm
' ให้ข้อความยืนยัน
MsgBox "Employee data submitted successfully!", vbInformation, "Success"
' ตั้งโฟกัสกลับที่ฟิลด์ Name
Range("Name").Select
End Sub
คำอธิบาย:
- รับข้อมูลจาก Named Ranges บนชีท Form
- เพิ่มข้อมูลนี้ไปแถวถัดไปในชีท Database พร้อม Timestamp
- เรียก Macro ClearForm เพื่อรีเซ็ตฟิลด์ฟอร์ม
- แสดงข้อความยืนยัน และตั้ง Cursor ที่ฟิลด์ Name
VBA Code สำหรับ ClearForm:
Sub ClearForm()
' ล้างฟิลด์ฟอร์มทั้งหมดโดยใช้ Named Ranges
Range("Name").ClearContents
Range("Department").ClearContents
Range("Salary").ClearContents
Range("StartDate").ClearContents
' ตั้งโฟกัสที่ฟิลด์แรก
Range("Name").Select
End Sub
คำอธิบาย:
- ล้างเนื้อหาของฟิลด์ฟอร์มทั้งหมด (Name, Department, Salary, StartDate) บนชีท Form
- ตั้ง Cursor กลับที่ฟิลด์ Name สำหรับป้อนข้อมูลต่อไปอย่างรวดเร็ว
ขั้นตอนที่ 5: ทดสอบฟอร์มล้างข้อมูลอัตโนมัติ
- บันทึกสมุดงานเป็น Excel Macro-Enabled Workbook (.xlsm)
- ป้อนข้อมูลในฟิลด์ฟอร์ม
- คลิก Submit and Clear Form
- ฟิลด์ฟอร์มจะส่งข้อมูลไปชีท Database อัตโนมัติ ล้างข้อมูลฟอร์ม และ Cursor กลับไปฟิลด์แรก พร้อมสำหรับการป้อนข้อมูลใหม่
- ข้อมูลที่ส่งเก็บอยู่ในชีท Database
- เพิ่มเติม สามารถใช้ปุ่ม Clear Form จะล้างข้อมูลฟอร์ม ไม่ว่าจะส่งแล้วหรือยัง
- Cursor กลับไปฟิลด์แรก
ประโยชน์ของฟอร์มล้างข้อมูลอัตโนมัติ
- ประสิทธิภาพ: ประหยัดเวลาจากการลบอินพุตด้วยตนเอง
- ความแม่นยำ: ลดข้อผิดพลาดจากงานซ้ำ
- ความสะดวก: เพิ่มประสบการณ์ผู้ใช้และความเร็วการป้อนข้อมูล
สรุป
ด้วยขั้นตอนข้างต้น คุณสามารถสร้างฟอร์มล้างข้อมูลอัตโนมัติที่ทำงานได้เต็มที่ด้วย VBA และ Named Ranges ฟอร์ม Excel จะล้างตัวเองหลังแต่ละรายการ เพิ่มประสิทธิภาพ Workflow อย่างมาก การใช้ Named Ranges ทำให้โค้ดบำรุงรักษาง่ายและเข้าใจง่าย ในขณะที่ฟังก์ชันล้างอัตโนมัติรับประกัน Workflow การป้อนข้อมูลที่มีประสิทธิภาพ