Page 1 of 1

แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 10:21 am
by yodpao.b
แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox2
untitled111.GIF
จากรูปคือ ต้องการให้ช่องที่ 1 (ComboBox1) โชว์ค่า เลขประจำตัวที่ไม่ซ้ำกัน (ทำได้ครับ)
ต้องการให้ช่องที่ 2 (ComboBox2) โชว์ค่า พศ.ที่ไม่ซ้ำกัน โดยอ้างอิงจาก ComboBox1 (ทำไม่ได้ครับ)

ชื่อฟอร์ม Form1SearchReport2
Code ที่ใช้กับ ช่องพัฒนาตนเองอยู่ด้านล่าง

Code: Select all

Private Sub OptionButton1_Click()
CommandButton1.Enabled = True
ComboBox1.Clear
Sheets("DataTrain").Select
Range("AA5").Select
MyComboBox1 = ActiveCell.Value
ComboBox1.AddItem MyComboBox1
ActiveCell.Offset(1, 0).Select
    Do While Not IsEmpty(ActiveCell.Value)
        If MyComboBox1 <> ActiveCell.Value Then
            MyComboBox1 = ActiveCell.Value
            ComboBox1.AddItem MyComboBox1
        End If
            ActiveCell.Offset(1, 0).Select
    Loop
End Sub
โคดที่ใช้ Code ที่ใช้กัน ช่องหมายเลขประจำตัว

Code: Select all

Private Sub ComboBox1_Change()
Sheets("DataTrain").Select
ComboBox2.Clear
Range("AB5").Select
    Do While Selection <> ""
        If ComboBox2 = ActiveCell And ActiveCell.Offset(0, 1) = ActiveCell.Offset(-1, 1) Then
            ComboBox3.AddItem ActiveCell.Offset(0, 1).Value
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
    End Sub
ทั้งนี้ได้แนบไฟล์มาให้อาจาร์ยดู

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 10:57 am
by snasui
:D Code น่าจะเป็นตามด้านล่างครับ

Code: Select all

Private Sub ComboBox1_Change()
    Sheets("DataTrain").Select
    ComboBox2.Clear
    Range("AB5").Select
    Do While Selection <> ""
        If ComboBox1 = CStr(ActiveCell.Offset(0, -1)) And ActiveCell.Offset(0, 2) <> ActiveCell.Offset(-1, 2) Then
            ComboBox2.AddItem ActiveCell.Offset(0, 2).Value
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 2:31 pm
by yodpao.b
จากโคด้ที่ได้มาเมื่อลองทำงานดูจะเห็นในการเลือกครั้งแรกและครั้งที่2 ไม่มีปัญหา
แต่พอถึงหมายเลข 554256 ช่อง พศ. กับไม่โชว์อะไร

Code: Select all

Range("AB5").Select
โคดตัวนี้เข้าใจผิดครับ อันที่จริง ต้องเป็น Range("AA5").Selectเพราะต่อไปคราวหน้าผมกลัวจะงง
เพราะอ้างจาก AA5
untitled1.GIF

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 3:07 pm
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ คราวต่อไปลองปรับมาก่อนก็จะดีครับ ติดตรงไหนก็ถามกันได้เรื่อย ๆ :P

Code: Select all

Private Sub ComboBox1_Change()
    Sheets("DataTrain").Select
    ComboBox2.Clear
    Range("AA5").Select
    Do While Selection <> ""
        If ComboBox1 = CStr(ActiveCell) And (ActiveCell.Offset(0, 3) <> ActiveCell.Offset(-1, 3) _
            Or ActiveCell <> ActiveCell.Offset(-1, 0)) Then
            ComboBox2.AddItem ActiveCell.Offset(0, 3).Value
        End If
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 3:30 pm
by yodpao.b
ขอบคุณครับอาจาร์ยเดี๋ยวจะไปดัดแปลงใช้งานครับ
CStr(ActiveCell) ตัวนี้หมายถึงอะไรครับ

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Thu Jan 05, 2012 4:03 pm
by snasui
:D เป็นการแปลง Activecell ซึ่งเป็น Number ให้เป็นค่าอักขระ เพื่อให้สามารถเทียบกับค่าใน ComboBox1 ได้ เพราะค่าใน ComboBox1 จะเป็น String หรืออักขระ

Re: แสดงเฉพาะตัวเลขที่ไม่ซ้ำกันใน ComboBox

Posted: Mon Jan 09, 2012 1:13 pm
by yodpao.b
เข้าใจแล้วครับ ต่อไปผมจะหัดใช้คำสั่งนี้ โดยไม่ต้องไปเสียเวลาแปลงใน ตารางจะได้ไม่เปลื่องเนื้อที่
ขอบคุณครับ