ต้องการดึงข้อมูลที่มีความสัมพันธ์จาก Combobox แรกมาใส่ Combobox ที่สองค่ะ
Posted: Fri Nov 22, 2019 10:58 pm
สวัสดีค่ะ
ขอสอบถามเนื่องจากเขียน VBA มาได้ระดับหนึ่งแต่ผลลัพธ์ที่ออกมา ยังไม่ถูกต้อง เลยอยากสอบถามว่าจาก code นี้มีตรงไหนต้องแก้ไขคะ ขอคำแนะนำด้วยนะคะ
ข้อมูลที่มีจากไฟล์ที่แนบมา
1. Sheet "All Checklist" เก็บข้อมูล checklist ทั้งหมดที่มี
2. Sheet "DataMap Process" เก็บข้อมูล Process ทั้งหมดที่มี
ความต้องการคือ
เมื่อเราเลือกข้อมูลที่อยู่ใน Combobox1 (Process) ข้อมูลใน Phase ที่อยู่ใน sheet "All Checklist" จะแสดงใน Combobox2 (Phase) แบบไม่ซ้ำกัน โดยใช้ วิธี Vlookup
ปัญหาที่พบคือ
ถ้าเราเลือกข้อมูลที่อยู่ใน Combobox1 (Process) ครั้งแรก จะแสดงข้อมูลใน Combobox2 (Phase) ได้อย่างถูกต้อง แต่เมื่อเลือกข้อมูลใน Combobox1 (Process) ครั้งถัดไป กลายเป็นว่าข้อมูล Combobox2 (Phase) แสดงข้อมูลที่อยู่ในครั้งแรกมาด้วย
Code ที่เขียนไว้ค่ะ
พร้อมทั้งแนบไฟล์มาให้ด้วยค่ะ
ขอบคุณสำหรับความช่วยเหลือค่ะ
ขอสอบถามเนื่องจากเขียน VBA มาได้ระดับหนึ่งแต่ผลลัพธ์ที่ออกมา ยังไม่ถูกต้อง เลยอยากสอบถามว่าจาก code นี้มีตรงไหนต้องแก้ไขคะ ขอคำแนะนำด้วยนะคะ
ข้อมูลที่มีจากไฟล์ที่แนบมา
1. Sheet "All Checklist" เก็บข้อมูล checklist ทั้งหมดที่มี
2. Sheet "DataMap Process" เก็บข้อมูล Process ทั้งหมดที่มี
ความต้องการคือ
เมื่อเราเลือกข้อมูลที่อยู่ใน Combobox1 (Process) ข้อมูลใน Phase ที่อยู่ใน sheet "All Checklist" จะแสดงใน Combobox2 (Phase) แบบไม่ซ้ำกัน โดยใช้ วิธี Vlookup
ปัญหาที่พบคือ
ถ้าเราเลือกข้อมูลที่อยู่ใน Combobox1 (Process) ครั้งแรก จะแสดงข้อมูลใน Combobox2 (Phase) ได้อย่างถูกต้อง แต่เมื่อเลือกข้อมูลใน Combobox1 (Process) ครั้งถัดไป กลายเป็นว่าข้อมูล Combobox2 (Phase) แสดงข้อมูลที่อยู่ในครั้งแรกมาด้วย
Code ที่เขียนไว้ค่ะ
Code: Select all
Private Sub cbProcess_Change()
Dim rowIndex As Integer
Dim processCode As String
Dim Dictionary As Object
Set Dictionary = CreateObject("Scripting.Dictionary")
rowIndex = 3
processCode = Application.WorksheetFunction.VLookup(cbProcess.Value, Sheet7.ListObjects("tbProcessName").Range, 2, False)
Do Until IsEmpty(Sheet6.Cells(rowIndex, 2))
If Sheet6.Cells(rowIndex, 2).Value = processCode Then
If Not Dictionary.exists(Sheet6.Cells(rowIndex, 4).Value) Then
Dictionary.Add Sheet6.Cells(rowIndex, 4).Value, 0
cbPhase.AddItem Sheet6.Cells(rowIndex, 4).Value
End If
End If
rowIndex = rowIndex + 1
Loop
End Sub
ขอบคุณสำหรับความช่วยเหลือค่ะ