/ / Excel VBA อินเทอร์เฟซผู้ใช้

รูปแบบผู้ใช้ Excel VBA แบบโต้ตอบ

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

รูปแบบผู้ใช้ Excel VBA แบบโต้ตอบ

คำอธิบาย: เมื่อใดก็ตามที่คุณป้อนค่าลงในกล่องข้อความ ID Excel VBA จะโหลดระเบียนที่ตรงกัน เมื่อคุณคลิกปุ่มแก้ไข / เพิ่ม Excel VBA จะแก้ไขระเบียนในแผ่นงานหรือเพิ่มระเบียนเมื่อยังไม่มี ID ปุ่มล้างล้างกล่องกาเครื่องหมายทั้งหมด ปุ่มปิดจะปิด Userform

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

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

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

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

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

4 คุณสามารถเปลี่ยนชื่อและคำอธิบายภาพของตัวควบคุมได้ ชื่อที่ใช้ในโค้ด Excel VBA คำอธิบายภาพคือคำอธิบายภาพที่ปรากฏบนหน้าจอของคุณ การเปลี่ยนชื่อของตัวควบคุมเป็นวิธีที่ดี แต่ไม่จำเป็นเนื่องจากเรามีตัวควบคุมเพียงเล็กน้อยในตัวอย่างนี้ ในการเปลี่ยนคำอธิบายภาพของฉลากกล่องข้อความและปุ่มคำสั่งให้คลิก 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()

TextBox1.SetFocus

End Sub

คำอธิบาย: บรรทัดรหัสนี้ตั้งค่าโฟกัสในกล่องข้อความแรกเนื่องจากเป็นตำแหน่งที่เราต้องการเริ่มต้นเมื่อโหลดฟอร์ม Userform

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

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

11. เลือก TextBox1 จากรายการแบบหล่นลงด้านซ้าย เลือกเปลี่ยนแปลงจากรายการแบบเลื่อนลงด้านขวา

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

Private Sub TextBox1_Change()

GetData

End Sub

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

14. ดับเบิลคลิกที่ปุ่มแก้ไข / เพิ่มคำสั่ง

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

Private Sub CommandButton1_Click()

EditAdd

End Sub

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

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

Private Sub CommandButton2_Click()

ClearForm

End Sub

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

18. ดับเบิลคลิกที่ปุ่มคำสั่งปิด

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

Private Sub CommandButton3_Click()

Unload Me

End Sub

คำอธิบาย: บรรทัดรหัสนี้จะปิด Userform

เวลาในการสร้าง subs คุณสามารถอ่านบทฟังก์ชั่นและบทย่อยเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ subs ถ้าคุณกำลังรีบเพียงวาง subs ต่อไปนี้ลงในโมดูล (ใน Visual Basic Editor คลิกแทรกโมดูล).

20 ขั้นแรกให้ประกาศตัวแปรสามชนิด Integer และตัวแปรหนึ่งประเภท Boolean ประกาศตัวแปรในส่วน Declarations ทั่วไป (ที่ด้านบนของโมดูล) ด้วยวิธีนี้คุณจะต้องประกาศตัวแปรเพียงครั้งเดียวและคุณสามารถใช้ตัวแปรเหล่านี้ในหลายหมวดย่อย

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. เพิ่ม GetData sub

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

คำอธิบาย: ถ้ากล่องข้อความรหัสประกอบด้วยค่าตัวเลข Excel VBA จะค้นหา ID และโหลดระเบียนที่ตรงกัน เราใช้ชุดควบคุมเพื่อวนรอบกล่องข้อความได้อย่างง่ายดาย ถ้า Excel VBA ไม่พบรหัส (แฟล็กยังคงเป็นเท็จ) จะล้างข้อมูลในช่องข้อความที่สองและที่สาม ถ้ากล่องข้อความรหัสไม่ประกอบด้วยค่าตัวเลข Excel VBA เรียก ClearForm sub

เพิ่มส่วนย่อย ClearForm

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

คำอธิบาย: Excel VBA ล้างกล่องข้อความทั้งหมด

23. เพิ่มย่อย EditAdd

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

คำอธิบาย: ถ้ากล่องข้อความ ID ไม่ว่างเปล่า Excel VBA จะแก้ไขระเบียนในแผ่นงาน (ตรงข้ามกับการโหลดระเบียนตามที่เราได้เห็นไว้ก่อนหน้านี้) ถ้า Excel VBA ไม่พบรหัส (ค่าสถานะยังคงเป็นเท็จ) จะเพิ่มระเบียนลงในแถวว่างถัดไป ตัวแปร emptyRow เป็นแถวว่างแรกและเพิ่มขึ้นทุกครั้งที่มีการเพิ่มระเบียน

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

รูปแบบผู้ใช้ Excel VBA แบบโต้ตอบ

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