Page 1 of 1

เรื่องตัวกรองขั้นสูง

Posted: Tue Feb 14, 2012 12:09 pm
by yodpao.b
เรียนอาจาร์ย
ผมต้องการใช้ตัวกรองขั้นสูง ร่วมกับฟอร์มที่สร้างขึ้นเอง ฟอร์มตัวนี้มีลักษณะคือเป็นการสร้างข้อแม้ขึ้นเพื่อนำไปใช้กับฐานข้อมุลที่จะกรอง
ได้ทำเรียบร้อยแล้วแต่ติดปัญหาตรงที่ สมุติว่าในฟอร์มมี 6 ข้อแม้ แต่ใช้ข้อแม้เดียวผลที่ได้คือไม่โชว์ค่าซักบรรทัด
แต่ถ้าลบเซลว่างที่ใช้กับ 5 ข้อแม้ออกแล้วใช้ตัวกรองอีกครั้งหนึ่งผลที่ได้ถูกต้องคือโชว์ค่าต่างๆที่ข้อแม้เดียวระบุ
โคดที่สั่งให้นำข้อแม้ในฟอร์มไปไว้ใน ชีท คือโคดด้านล่าง

Code: Select all

Private Sub CommandButton11_Click()
Range("C3") = ComboBox01
Range("D3") = ComboBox02
Range("E3") = TextBox0311
Range("F3") = TextBox0322
Range("G3") = TextBox0411
Range("H3") = TextBox0422
Unload Me
End Sub
หลังจากใช้โดคนี้
กล่าวคือ ใน Range("G3") จะมีข้อแม้อยู่ ส่วน Rangeอื่นไม่มี
ผลที่ได้ไม่โชว์ค่าใดใด
แต่พอลอง ลบเซลว่างใน Range("C3"),Range("D3"),Range("E3"),Range("F3"),Range("H3")
ผลที่ได้ถูกต้องคือโชว์ค่าให้เห็น
คำถาม จะแก้ไขอย่างไรดีว่าโปรแกรมมันมองค่าเซลว่างที่อยู่ใน Range("C3"),Range("D3"),Range("E3"),Range("F3"),Range("H3") ว่ามีค่า

Re: เรื่องตัวกรองขั้นสูง

Posted: Tue Feb 14, 2012 1:08 pm
by snasui
:D แนบตัวอย่างมาดูด้วยก็จะดีครับ จะได้ช่วยกันทดสอบได้ครับ

Re: เรื่องตัวกรองขั้นสูง

Posted: Tue Feb 14, 2012 1:49 pm
by yodpao.b
ขอโทษครับ
ช่วยดูหน่อยนะครับอาจาร์ย
โปรแกรมตัวทำงานอยู่ที่หน้า DataReimbursement
ปุ่ม Button 24
ส่วนโคดที่สงสัยคือ

Code: Select all

Private Sub CommandButton11_Click()
Range("C3") = ComboBox01
Range("D3") = ComboBox02
Range("E3") = TextBox0311
Range("F3") = TextBox0322
Range("G3") = TextBox0411
Range("H3") = TextBox0422
'Range("I4") = TextBox0511
'Range("J4") = TextBox0522
'Range("K3") = ComboBox06
'Range("L3") = ComboBox07
'Range("M3") = ComboBox08
'Range("N3") = ComboBox21
'Range("O3") = ComboBox22
'Range("P3") = ComboBox23
Unload Me
Call MacroReport1AdvancedFitter1
End Sub

Re: เรื่องตัวกรองขั้นสูง

Posted: Tue Feb 14, 2012 4:43 pm
by snasui
:D ตอนสร้าง Report ลองใช้ Code ตามตัวอย่างด้านล่างเข้าไป Clean Data ในช่วง Criteria ของ Advance Filter โดยเซลล์ไหนไม่มีค่าก็ให้ Clear Content ออกไปครับ

Code: Select all

Sub MacroReport1AdvancedFitter1()
Sheets("DataReimbursement").Select
    Dim r As Range
    For Each r In Range("C2:P3")
        If Len(r) = 0 Then
            r.ClearContents
        End If
    Next r
    Range("C10").Select
    Range("C10:Y10000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("C2:P3"), Unique:=False
End Sub

Re: เรื่องตัวกรองขั้นสูง

Posted: Wed Feb 15, 2012 12:03 pm
by yodpao.b
ผมหาวิธีลบแล้วนำข้อแม้มาแทนที่อยู่ตั้ง 2 วันทำไม้ได้
ตอนนี้ใช้ได้แล้วครับอาจาร์ย
ขอบคุณมากครับ
(วิธีกรองแบบนี้ผมนำไปใช้ได้หลายอย่างเลยครับ)