/ / Excel VBA Userform กับหลายหน้า

Excel VBA Userform กับหลายหน้า

ด้านล่างเราจะดูที่โปรแกรมใน Excel VBA ซึ่งจะสร้าง Userform ที่ประกอบด้วยหลายหน้า userform นี้ยังประกอบด้วยภาพ

Multipage Control มีสองหน้า ที่หน้า 1 ผู้ใช้สามารถกรอกข้อมูลส่วนบุคคลของตนได้ ที่หน้า 2 ผู้ใช้สามารถระบุภาพวาดที่เขา / เธอชอบมากที่สุด

รูปแบบผู้ใช้ 1
รูปแบบผู้ใช้ 2

ในการสร้าง Userform นี้ให้ทำตามขั้นตอนต่อไปนี้

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

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

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

3 เพิ่มตัวควบคุม Multipage ป้ายชื่อกล่องข้อความ (ด้านบนสุดที่สองด้านล่างแรก), เฟรม, ปุ่มตัวเลือก (แรกที่ด้านซ้ายสองด้านขวา) กล่องรายการปุ่มควบคุมภาพและปุ่มคำสั่ง เมื่อผลการค้นหาเสร็จสมบูรณ์ผลควรสอดคล้องกับ Userform รุ่นที่ว่างเปล่าที่แสดงไว้ก่อนหน้านี้ ตัวอย่างเช่นสร้างตัวควบคุมหลายรายการโดยคลิกที่ Multipage จาก Toolbox จากนั้นคุณสามารถลาก Multipage control บน Userform ได้ เมื่อคุณมาถึงกรอบเพศอย่าลืมวาดเฟรมนี้ก่อนที่คุณจะวางตัวเลือกสองปุ่มไว้

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

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

เปิดตัว Visual Basic Editor

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

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

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

Private Sub UserForm_Initialize()

With ListBox1
    .AddItem "Mountains"
    .AddItem "Sunset"
    .AddItem "Beach"
    .AddItem "Winter"
End With

End Sub

คำอธิบาย: กล่องรายการในหน้า 2 จะเต็มไป

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

10. ดาวน์โหลดรูปภาพ (ด้านขวาของหน้านี้) และเพิ่มลงใน "C: test"

11. ใน Project Explorer ให้คลิกสองครั้งที่ UserForm1

12. ดับเบิลคลิกที่ช่องรายการ

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

Private Sub ListBox1_Click()

If ListBox1.ListIndex = 0 Then
    Image1.Picture = LoadPicture("C:testMountains.jpg")
End If

If ListBox1.ListIndex = 1 Then
    Image1.Picture = LoadPicture("C:testSunset.jpg")
End If

If ListBox1.ListIndex = 2 Then
    Image1.Picture = LoadPicture("C:testBeach.jpg")
End If

If ListBox1.ListIndex = 3 Then
    Image1.Picture = LoadPicture("C:testWinter.jpg")
End If

End Sub

คำอธิบาย: สายรหัสโหลดรูปภาพขึ้นอยู่กับรายการที่เลือกในกล่องรายการ

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

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

Private Sub CommandButton1_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 = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 3).Value = "Male"
Else
    Cells(emptyRow, 3).Value = "Female"
End If

Cells(emptyRow, 4).Value = ListBox1.Value

"Close Userform
Unload Me

End Sub

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

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

ผล:

ทดสอบ Userform

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