หากเจอข้อความผิดพลาด AutoFilter method of Range Class Failed บทความนี้รวบรวม 5 สาเหตุและวิธีแก้ไขที่พิสูจน์แล้ว
ดาวน์โหลดไฟล์ฝึกหัด
5 วิธีแก้ปัญหา AutoFilter Method of Range Class Failed
ใช้ชุดข้อมูลตัวอย่างเป็นช่วงที่จะใช้ AutoFilter กรองตามเงื่อนไข
วิธีแก้ที่ 1: แก้ไขหมายเลข Field ให้ถูกต้อง
พยายามกรองช่วงข้อมูลตามค่ายอดขาย > 2500 ด้วย VBA แต่กำหนด field:=100 ผิด เพราะช่วงข้อมูลมีแค่ 3 คอลัมน์
โค้ดผิด:Sub fixing_autofilter_issue_1()
Dim sht As Worksheet
Set sht = Worksheets("Field Number")
sht.Range("B3:D3").AutoFilter field:=100, Criteria1:=">=2500"
End Sub
เกิดข้อผิดพลาด "AutoFilter method of Range Class Failed"
แก้ไข: เปลี่ยน field ให้ตรงกับลำดับคอลัมน์ในช่วง (field:=3 สำหรับคอลัมน์ Sales)Sub fixing_autofilter_issue_1()
Dim sht As Worksheet
Set sht = Worksheets("Field Number")
sht.Range("B3:D3").AutoFilter field:=3, Criteria1:=">=2500"
End Sub
กด F5 - ทำงานได้ปกติ
อ่านเพิ่มเติม: Excel VBA ตรวจสอบว่า AutoFilter เปิดอยู่หรือไม่ (4 วิธี)
วิธีแก้ที่ 2: ใช้ช่วงข้อมูล (Range) ให้ถูกต้อง
พยายามกรองช่วง D3:D100 (คอลัมน์เดียว) แต่กำหนด field:=3 ผิดเพราะช่วงมีแค่ 1 คอลัมน์
โค้ดผิด:Sub fixing_autofilter_issue_2()
Dim sht As Worksheet
Set sht = Worksheets("Range")
sht.Range("D3:D100").AutoFilter field:=3, Criteria1:=">=2500"
End Sub
แก้ไข: เปลี่ยนช่วงเป็น B3:D3 (หัวข้อทั้ง 3 คอลัมน์) field:=3 จึงถูกต้อง
Sub fixing_autofilter_issue_2()
Dim sht As Worksheet
Set sht = Worksheets("Range")
sht.Range("B3:D3").AutoFilter field:=3, Criteria1:=">=2500"
End Sub
วิธีแก้ที่ 3: ปัญหาจากการกรองตาราง (Table)
พยายาม AutoFilter ตาราง Excel โดยตรง จะเกิดข้อผิดพลาด
แก้ไข: แปลงตารางเป็นช่วงข้อมูลปกติ: เลือกตาราง > Table Design > Tools > Convert to Range > กด Yes แล้วรันโค้ดเดิมจะทำงานได้วิธีแก้ที่ 4: ปัญหาจากการกรอง Pivot Table
ไม่สามารถ AutoFilter Pivot Table โดยตรงได้
แก้ไข: ใช้ AutoFilter กับ ช่วงข้อมูลต้นทาง (Source Data) ของ Pivot Table แทนวิธีแก้ที่ 5: ใช้เฉพาะหัวข้อ (Header) แทนช่วงข้อมูลทั้งหมด
ใช้ช่วงข้อมูลทั้งหมด B3:D11 แทนที่จะใช้แค่หัวข้อ B3:D3 บางครั้งก่อให้เกิดข้อผิดพลาดกับช่วงใหญ่
แก้ไข: เปลี่ยนช่วงเป็นหัวข้อเพียงอย่างเดียว B3:D3Sub fixing_autofilter_issue_5()
Dim sht As Worksheet
Set sht = Worksheets("Header")
sht.Range("B3:D3").AutoFilter field:=3, Criteria1:=">=2500"
End Sub
สรุป
บทความนี้ครอบคลุม 5 สาเหตุและวิธีแก้ปัญหา AutoFilter method of Range Class Failed ใน Excel: 1) Field number ผิด, 2) Range ไม่ตรงกับ Field, 3) กรอง Table โดยตรง, 4) กรอง Pivot Table โดยตรง, 5) ใช้ช่วงข้อมูลทั้งหมดแทนหัวข้อ หวังว่าจะเป็นประโยชน์