Page 1 of 1

อยากทราบวิธีเอาค่ามาใส่ Combo box แบบ Dynamic และ Filter

Posted: Thu Feb 02, 2012 4:37 pm
by prawitj
ในชีท PO ผมอยากเอาค่าจังหวัด ใน Sheet Proviince และรุ่นรถมาใส่ใน Combo box ใน VBA ซึ่งตอนที่ใช้ Validation นั้นผมได้ทำวิธีแบบอาจารย์แนะนำคือ
=OFFSET(Province!$A$2,0,0,COUNTA(Province!$A$2:$A$65536)) แต่ทีนี้ผมจะเปลี่ยนไปใช้ VBA เลยอยากจะทำ Dropdown แบบ Dynamic (เผื่อเพิ่มจังหวัด หรือรุ่นรถ ฯลฯ) ผมลองเขียนแล้วมัน Error

ส่วน Amphur หรือข้อมูลที่เป็น Derivative ผมก็อยากให้มีความสัมพันธ์เหมือนที่ทำได้ใน Validation เวลา Combo box เปลี่ยน อยากให้อาจารย์แนะนำ หน่อยครับ ว่าจะเขียนอย่างไรดี เช่นเวลา จังหวัดเป็นกทม. ก็จะเหลือเฉพาะอำเภอที่อยู่ใน กทม.เท่านั้น

ส่วนคำถามเรื่อง Filter (ใน Sheet Filter) พอจะมีวิธีที่จะ Filter ได้มากกว่า 1,000 แถวไม๊ครับ เพราะผมเห็นมันทำได้แค่ 1,000 แถวเท่านั้นเอง

Re: อยากทราบวิธีเอาค่ามาใส่ Combo box แบบ Dynamic และ Filter

Posted: Thu Feb 02, 2012 5:18 pm
by snasui
:D ลองดูตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Private Sub cboProvince_Change()
    On Error Resume Next
    Dim Amphur As Range
    Dim iStart As Integer
    Dim iStop As Integer
    With Sheets("Province")
        iStart = Application.Match(cboProvince, .Range("J:J"), 0)
        iStop = Application.CountIf(.Range("J:J"), cboProvince)
        Set Amphur = .Range("G" & iStart).Resize(iStop)
    End With
    cboAmphur = ""
    cboAmphur.RowSource = "Province!" & Amphur.Address
End Sub

Private Sub UserForm_Activate()
    On Error Resume Next
    Dim Province As String
    Province = Range("lProvince").Address
    cboProvince.RowSource = "Province!" & Province
End Sub
Excel สามารถ Filter ได้มากกว่า 1000 แถวครับ แต่แสดงใน Dropdown ให้เลือกได้ 1000 แถว เนื่องจากเป็นข้อจำกัดของ Excel 2003 ซึ่งสามารถเลือกได้เพียงเท่านั้น ส่วน 2007 ขึ้นไปเลือกได้ถึง 10000 ครับ

Re: อยากทราบวิธีเอาค่ามาใส่ Combo box แบบ Dynamic และ Filter

Posted: Thu Feb 02, 2012 5:31 pm
by bank9597
:D :D เอ...ทำไมผมยังใช้สูตรทำอยู่อ่ะ มันทำกับ VBA ได้ด้วยเหรอ ไม่รู้มาก่อนเลย อิอิ

Re: อยากทราบวิธีเอาค่ามาใส่ Combo box แบบ Dynamic และ Filter

Posted: Thu Feb 02, 2012 5:37 pm
by snasui
:D ด้วย VBA มันย่อมทำได้มากกว่าความสามารถของ Excel ครับ เพราะเป็นการเขียนโปรแกรมสั่งงาน แต่จะมีความสามารถแค่ไหนขึ้นอยู่กับความสามารถของ Programmer หรือผู้ใช้ครับ