คุณสมบัติ AutoFilter ของ Excel มีประโยชน์แต่บางครั้งซ่อนอยู่หรือแสดงผิดปกติ การใช้ VBA เป็นวิธีที่มีประสิทธิภาพที่สุดในการตรวจสอบสถานะจริง บทความนี้จะแสดง 4 วิธีง่ายและรวดเร็ว ตรวจสอบว่า AutoFilter เปิดอยู่หรือไม่ ใน Excel ด้วย VBA macro
ดาวน์โหลดสมุดงานฝึกหัด
4 วิธีรวดเร็ว VBA ตรวจสอบ AutoFilter ใน Excel
1. VBA ตรวจสอบว่า AutoFilter เปิดหรือปิดในเวิร์กชีท
- กด Alt + F11 เปิด Visual Basic Editor
- Insert > Module
- วางโค้ด:
Sub AutoFilterCheck()
If ActiveSheet.AutoFilterMode = True Then
MsgBox "Auto Filter is turned on"
Else
MsgBox "Auto Filter is turned off"
End If
End Sub
- กด F5 รันแมโคร - จะแสดง MsgBox แจ้งสถานะ
แม้ไม่เห็นลูกศรตัวกรอง VBA ก็บอกสถานะจริงได้แม่นยำ
อ่านเพิ่มเติม: Excel VBA: ลบ AutoFilter หากมีอยู่ (7 วิธี)
2. Debug โค้ด VBA นับจำนวน AutoFilter ทั้งหมดในชีท
นับจำนวน AutoFilter ที่เปิดอยู่ แสดงผลใน Immediate Window
- เปิด VBE แทรก Module
- วางโค้ด:
Sub CountAutoFilters()
Dim iCount As Long
If ActiveSheet.AutoFilterMode = True Then
iCount = 1
Debug.Print "AutoFilterMode Count: " & iCount
End If
End Sub
- รันแมโคร - ดูผลใน Immediate Window (Ctrl+G)
อ่านเพิ่มเติม: VBA AutoFilter หลายเงื่อนไขในฟิลด์เดียวใน Excel (4 วิธี)
3. VBA ตรวจสอบว่าคอลัมน์เฉพาะถูกกรองหรือไม่
ตรวจสอบคอลัมน์เฉพาะ (เช่น คอลัมน์ B) ว่าถูก AutoFilter หรือไม่
- เปิด VBE แทรก Module
- วางโค้ด:
Sub CheckColumnFilter()
Dim iSheet As Worksheet
Set iSheet = ActiveSheet
If iSheet.AutoFilter.Filters(2).On Then
MsgBox "Column B is filtered."
Else
MsgBox "Column B is not filtered."
End If
End Sub
- รันแมโคร - แสดง MsgBox ผลลัพธ์
แม้เห็นลูกศรตัวกรอง VBA อาจบอกว่าไม่ได้กรอง (กรณีลูกศรแสดงแต่ไม่ได้กรองจริง)
อ่านเพิ่มเติม: วิธี Autofilter ค่าที่ไม่เท่ากับค่าที่กำหนดด้วย VBA ใน Excel
4. VBA Macro ตรวจสอบ AutoFilter ที่เปิดอยู่ในสมุดงาน
ตรวจสอบทุกชีทในสมุดงานว่ามี AutoFilter เปิดอยู่หรือไม่
- เปิด VBE แทรก Module
- วางโค้ด:
Sub CheckAutofilterSheet()
Dim z As Double
For z = 1 To ThisWorkbook.Sheets.Count
If ThisWorkbook.Sheets(z).AutoFilterMode Then
MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter"
End If
Next
End Sub
- รันแมโคร - จะแสดง MsgBox สำหรับแต่ละชีทที่มี AutoFilter เปิด
อ่านเพิ่มเติม: วิธี Autofilter และคัดลอกแถวที่มองเห็นได้ด้วย Excel VBA
สรุป
บทความนี้แสดง 4 วิธี VBA ตรวจสอบสถานะ AutoFilter ใน Excel: ตรวจสอบชีททั้งหมด, นับจำนวน, ตรวจสอบคอลัมน์เฉพาะ, ตรวจสอบทุกชีทในสมุดงาน ช่วยให้ทราบสถานะจริงแม้ UI แสดงผิดปกติ