Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

สร้างฟอร์ม Excel ล้างข้อมูลอัตโนมัติด้วย VBA และ Named Ranges

บทนำ

การสร้างฟอร์มที่ล้างตัวเองด้วย 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 การป้อนข้อมูลที่มีประสิทธิภาพ