รูปแบบผู้ใช้ Excel VBA
เพิ่มตัวควบคุม | แสดง Userform | กำหนดมาโคร | ทดสอบ Userform
บทนี้สอนวิธีสร้าง a รูปแบบผู้ใช้ Excel VBA. Userform ที่เราจะสร้างขึ้นมีลักษณะดังนี้:
เพิ่มตัวควบคุม
เมื่อต้องการเพิ่มตัวควบคุมไปยัง Userform ให้ทำตามขั้นตอนต่อไปนี้
1. เปิดตัวแก้ไข Visual Basic ถ้าโครงการ Explorer ไม่สามารถมองเห็นคลิกมุมมองโครงการ Explorer.
2. คลิกแทรก, Userform ถ้ากล่องเครื่องมือไม่ปรากฏขึ้นโดยอัตโนมัติให้คลิกมุมมองกล่องเครื่องมือ ควรตั้งค่าหน้าจอดังนี้
เพิ่มตัวควบคุมที่แสดงในตารางด้านล่าง เมื่อผลการค้นหาเสร็จสมบูรณ์ผลลัพธ์ควรสอดคล้องกับรูปแบบ 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 ให้วางคำสั่งบนเวิร์กชีทของคุณและเพิ่มบรรทัดรหัสต่อไปนี้:
DinnerPlannerUserForm.Show
End Sub
ตอนนี้เรากำลังสร้าง Sub UserForm_Initialize เมื่อคุณใช้การแสดงวิธีการสำหรับ Userform ย่อยนี้จะถูกดำเนินการโดยอัตโนมัติ
1. เปิดตัวแก้ไข Visual Basic
2. ใน Project Explorer คลิกขวาที่ DinnerPlannerUserForm จากนั้นคลิก View Code
3. เลือก Userform จากรายการแบบหล่นลงด้านซ้าย เลือกเริ่มต้นจากรายการแบบเลื่อนลงด้านขวา
4. เพิ่มบรรทัดรหัสต่อไปนี้:
"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. เพิ่มบรรทัดรหัสต่อไปนี้:
MoneyTextBox.Text = MoneySpinButton.Value
End Sub
คำอธิบาย: บรรทัดรหัสนี้จะปรับปรุงกล่องข้อความเมื่อคุณใช้ปุ่มสปิน
5. ดับเบิลคลิกที่ปุ่ม OK
6. เพิ่มบรรทัดรหัสต่อไปนี้:
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. เพิ่มบรรทัดรหัสต่อไปนี้:
Call UserForm_Initialize
End Sub
คำอธิบาย: สายรหัสนี้เรียก Sub UserForm_Initialize เมื่อคุณคลิกที่ปุ่ม Clear
9. ดับเบิลคลิกที่ปุ่ม Cancel
10. เพิ่มบรรทัดรหัสต่อไปนี้:
Unload Me
End Sub
คำอธิบาย: บรรทัดรหัสนี้จะปิด Userform เมื่อคุณคลิกที่ปุ่มยกเลิก
ทดสอบ Userform
ออกจาก Visual Basic Editor ป้อนป้ายกำกับที่แสดงไว้ด้านล่างในแถวที่ 1 และทดสอบ Userform
ผล: