/ / Excel VBA Userform

รูปแบบผู้ใช้ Excel VBA

เพิ่มตัวควบคุม | แสดง Userform | กำหนดมาโคร | ทดสอบ Userform

บทนี้สอนวิธีสร้าง a รูปแบบผู้ใช้ Excel VBA. Userform ที่เราจะสร้างขึ้นมีลักษณะดังนี้:

รูปแบบผู้ใช้ Excel VBA

เพิ่มตัวควบคุม

เมื่อต้องการเพิ่มตัวควบคุมไปยัง Userform ให้ทำตามขั้นตอนต่อไปนี้

1. เปิดตัวแก้ไข Visual Basic ถ้าโครงการ Explorer ไม่สามารถมองเห็นคลิกมุมมองโครงการ Explorer.

2. คลิกแทรก, Userform ถ้ากล่องเครื่องมือไม่ปรากฏขึ้นโดยอัตโนมัติให้คลิกมุมมองกล่องเครื่องมือ ควรตั้งค่าหน้าจอดังนี้

การตั้งค่าหน้าจอ Userform ใน Excel VBA

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

4 เปลี่ยนชื่อและคำอธิบายภาพของตัวควบคุมตามตารางด้านล่าง ชื่อที่ใช้ในโค้ด Excel VBA คำอธิบายภาพคือคำอธิบายภาพที่ปรากฏบนหน้าจอของคุณ การเปลี่ยนชื่อของตัวควบคุมเป็นวิธีที่ดี ซึ่งจะทำให้โค้ดของคุณอ่านง่ายขึ้น ในการเปลี่ยนชื่อและคำอธิบายภาพของตัวควบคุมให้คลิก View, Properties Window และคลิกที่แต่ละตัวควบคุม

ควบคุม ชื่อ คำบรรยายภาพ
UserForm DinnerPlannerUserForm วางแผนมื้อเย็น
กล่องข้อความ NameTextBox
กล่องข้อความ PhoneTextBox
กล่องรายการ CityListBox
กล่องคำสั่งผสม DinnerComboBox
ทำเครื่องหมายในช่อง DateCheckBox1 13 มิถุนายน
ทำเครื่องหมายในช่อง DateCheckBox2 20 มิถุนายน
ทำเครื่องหมายในช่อง DateCheckBox3 27 มิถุนายน
กรอบ CarFrame รถ
ปุ่มตัวเลือก CarOptionButton1 ใช่
ปุ่มตัวเลือก CarOptionButton2 ไม่
กล่องข้อความ MoneyTextBox
ปุ่มสปิน MoneySpinButton
ปุ่มคำสั่ง OKButton ตกลง
ปุ่มคำสั่ง ClearButton ชัดเจน
ปุ่มคำสั่ง CancelButton ยกเลิก
7 ป้าย ไม่จำเป็นต้องเปลี่ยน ชื่อ: หมายเลขโทรศัพท์: ฯลฯ

หมายเหตุ: กล่องคำสั่งผสมคือรายการแบบหล่นลงจากที่ผู้ใช้สามารถเลือกรายการหรือกรอกข้อมูลในตัวเลือกของตนเองได้ สามารถเลือกปุ่มตัวเลือกได้เพียงปุ่มเดียวเท่านั้น

แสดง Userform

เมื่อต้องการแสดง Userform ให้วางคำสั่งบนเวิร์กชีทของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

ตอนนี้เรากำลังสร้าง Sub UserForm_Initialize เมื่อคุณใช้การแสดงวิธีการสำหรับ Userform ย่อยนี้จะถูกดำเนินการโดยอัตโนมัติ

1. เปิดตัวแก้ไข Visual Basic

2. ใน Project Explorer คลิกขวาที่ DinnerPlannerUserForm จากนั้นคลิก View Code

3. เลือก Userform จากรายการแบบหล่นลงด้านซ้าย เลือกเริ่มต้นจากรายการแบบเลื่อนลงด้านขวา

4. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

คำอธิบาย: กล่องข้อความจะถูกล้างกล่องรายการและกล่องคำสั่งผสมจะเต็มช่องทำเครื่องหมายถูกยกเลิกการทำเครื่องหมาย ฯลฯ

กำหนดมาโคร

ขณะนี้เราได้สร้างส่วนแรกของ Userform แล้ว แม้ว่าจะดูเรียบร้อยแล้ว แต่จะไม่มีอะไรเกิดขึ้นเมื่อคลิกปุ่มคำสั่งใน Userform

1. เปิดตัวแก้ไข Visual Basic

2. ใน Project Explorer ดับเบิลคลิกที่ DinnerPlannerUserForm

3. ดับเบิลคลิกที่ปุ่มหมุนเงิน

4. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

คำอธิบาย: บรรทัดรหัสนี้จะปรับปรุงกล่องข้อความเมื่อคุณใช้ปุ่มสปิน

5. ดับเบิลคลิกที่ปุ่ม OK

6. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub OKButton_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

End Sub

คำอธิบาย: ขั้นแรกเราเปิดใช้ Sheet1 ถัดไปเรากำหนด emptyRow ตัวแปร emptyRow เป็นแถวว่างแรกและเพิ่มขึ้นทุกครั้งที่มีการเพิ่มระเบียน สุดท้ายเราจะโอนข้อมูลจาก Userform ไปยังคอลัมน์เฉพาะของ emptyRow

7. ดับเบิลคลิกที่ปุ่ม Clear

8. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

คำอธิบาย: สายรหัสนี้เรียก Sub UserForm_Initialize เมื่อคุณคลิกที่ปุ่ม Clear

9. ดับเบิลคลิกที่ปุ่ม Cancel

10. เพิ่มบรรทัดรหัสต่อไปนี้:

Private Sub CancelButton_Click()

Unload Me

End Sub

คำอธิบาย: บรรทัดรหัสนี้จะปิด Userform เมื่อคุณคลิกที่ปุ่มยกเลิก

ทดสอบ Userform

ออกจาก Visual Basic Editor ป้อนป้ายกำกับที่แสดงไว้ด้านล่างในแถวที่ 1 และทดสอบ Userform

ผล:

ทดสอบ Userform

อ่านเพิ่มเติมได้ที่: