สวัสดีอาจารย์และเพื่อนๆ ครับ
ผมทำฟอร์มชื่อ
AddStuff เพื่อเอาไว้ใส่ข้อมูลใหม่ที่ไม่มีในฐานข้อมูล ตั้งใจจะทำให้มี 3 แท็ป แต่แท็ปแรกก็จอดแล้ว ที่แท็ปแรกใช้เฟรมแบ่งเป็น 3 ส่วน ตั้งใจไว้ว่าจะให้ผู้ใช้งานไล่ทำให้เสร็จทีละส่วน (ทำส่วนที่ 1 เสร็จ ส่วนที่ 2 จึงค่อยสั่งให้ Enable แบบนี้ไปเรื่อยๆ ครับ)

- combo1.png (180.47 KiB) Viewed 264 times

- combo2.png (8.17 KiB) Viewed 264 times
ที่คิดไว้คือ พอเลือก option ในส่วนที่ 1 เสร็จแล้ว สมมติว่าเลือก option1 โค้ดก็จะรับว่าเลือกค่าที่ 1 แล้วก็จะไปมองหากลุ่มย่อย (เป็นรหัส 3 หลัก) ในชีท
9SD คอลัมน์ B แล้วเลือกรหัสที่ขึ้นต้นด้วย 1 มาทั้งหมดแบบไม่ซ้ำ แล้วเอาไปใส่ใน combo box ที่อยู่ในเฟรมที่ 2
ตอนแรกใส่ใน combo box ได้แล้วแต่มาหมดเลยทั้งซ้ำและไม่ซ้ำ ก็เลยลองเอาคำสั่ง collection มาใช้เพื่อเลือกรายการไม่ซ้ำก่อน ทำยังไงก็ไม่ได้ ผมควรปรับอย่างไรดีครับ โค้ดอยู่ที่ตัวฟอร์มเลยครับ
หากเลือก option1 (เพิ่งเขียนคำสั่งของ option1 ไว้อย่างเดียวครับ) จะได้สมาชิกใน combo box คือ 100, 101, 102, 103, 104, 105 ครับ
Code: Select all
Private Sub obMain1_Click()
Dim i%, iRow%, bNum%
Dim cSubCode As New Collection
' Variables
Set wsSTDB = ThisWorkbook.Sheets("9sd")
With wsSTDB
iRow = .Range("b" & .Rows.Count).End(xlUp).Row
End With
If obName = "" Then obName = obMain1.Name
bNum = Right(obName, 1)
Debug.Print bNum, IsNumeric(bNum)
' Enable some controls
cbbSub1.Enabled = True
cbbSub1.Clear
'Call SubCodeUnique(iRow, bNum)
On Error Resume Next
With wsSTDB
For i = 5 To iRow
If bNum < VBA.Left(.Cells(i, "b"), 1) Then Exit For
If bNum = VBA.Left(.Cells(i, "b"), 1) Then _
cSubCode.Add .Cells(i, "b").Value, .Cells(i, "b").Value
Next i
End With
On Error GoTo 0
'Add item(s) to combo box
If cSubCode.Count = 0 Then Exit Sub
For i = 1 To cSubCode.Count
cbbSub1.AddItem cSubCode.Item(i)
Next i
End Sub