ตัวกรองอัตโนมัติ ของ Excel คุณลักษณะมีประสิทธิภาพมากในการดึงข้อมูลตามเงื่อนไขบางประการ แต่บางครั้งเนื่องจากปัญหาทางเทคนิค ตัวกรองอัตโนมัติ ถูกซ่อนหรือแม้ว่าไม่มีตัวกรอง Excel แสดงว่ามี ในกรณีนั้น แทบจะเป็นไปไม่ได้เลยที่จะเข้าใจว่า ตัวกรองอัตโนมัติ เปิดใช้งานสำหรับแผ่นงาน Excel หรือไม่ การใช้งาน VBA เป็นวิธีที่มีประสิทธิภาพ รวดเร็วที่สุด และปลอดภัยที่สุดในการรันการดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงให้คุณเห็น 4 วิธีง่ายๆ และรวดเร็วในการตรวจสอบว่า AutoFilter เปิดอยู่ ใน Excel ด้วย มาโคร VBA .
ดาวน์โหลดสมุดงาน
คุณสามารถดาวน์โหลดเวิร์กบุ๊ก Excel แบบฝึกหัดฟรีได้จากที่นี่
4 วิธีด่วนด้วย VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ใน Excel หรือไม่
จากส่วนนี้ คุณจะได้เรียนรู้วิธีตรวจสอบว่า AutoFilter เปิดอยู่หรือไม่ ใน Excel ด้วย VBA ได้ 4 วิธี
ด้านบนคือ ชุดข้อมูลตัวอย่าง ว่าบทความนี้จะปฏิบัติตามเพื่ออธิบายขั้นตอนต่างๆ
1. ฝัง VBA เพื่อตรวจสอบว่า AutoFilter เปิดหรือปิดในแผ่นงาน Excel
ในส่วนนี้ คุณจะได้เรียนรู้วิธีตรวจสอบว่า AutoFilter เปิดอยู่ในเวิร์กชีต Excel หรือไม่ ด้วย VBA . ขั้นตอนการดำเนินการดังแสดงด้านล่าง
ขั้นตอน:
- ในตอนแรก ให้กด Alt + F11 บนแป้นพิมพ์ของคุณหรือไปที่แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .
- ถัดไป ในหน้าต่างรหัสป๊อปอัป จากแถบเมนู ให้คลิก แทรก -> โมดูล .
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 บนแป้นพิมพ์หรือจากแถบเมนู ให้เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm . คุณยังสามารถคลิกที่ไอคอนการวิ่งขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร
หลังจากรันโค้ดสำเร็จแล้ว ให้ดูภาพต่อไปนี้เพื่อดูผลลัพธ์
ตอนนี้ดูภาพด้านบน แม้ว่าจะไม่มีลูกศรตัวกรองในชุดข้อมูล แต่ Excel MsgBox กำลังบอกเราว่า ตัวกรองอัตโนมัติเปิดอยู่ในแผ่นงานนี้ .
การใช้ VBA สะดวกมากสำหรับสถานการณ์ประเภทนี้ซึ่งมีความไม่แน่นอนเกี่ยวกับการดำเนินการใดๆ VBA มาโครช่วยให้คุณดึงผลลัพธ์ที่ถูกต้องได้แม้ดวงตาจะมองไม่เห็น
คำอธิบายโค้ด VBA
If ActiveSheet.AutoFilterMode = True Then
MsgBox "Auto Filter is turned on"
Else
MsgBox "Auto Filter is turned off"
End If
โค้ดนี้หมายถึง หากโหมดตัวกรองอัตโนมัติเป็นจริงสำหรับชีตที่ใช้งานอยู่ จากนั้นส่งคืน “ตัวกรองอัตโนมัติเปิดอยู่ ” ใน Excel MsgBox; มิฉะนั้น จะแสดง “ปิดตัวกรองอัตโนมัติ ” ข้อความ
อ่านเพิ่มเติม: Excel VBA:ลบตัวกรองอัตโนมัติหากมีอยู่ (7 วิธี)
2. ดีบักโค้ด VBA และรับจำนวน AutoFilter ทั้งหมดใน Active Sheet
ส่วนนี้จะแสดงวิธีการดีบักโค้ดและนับจำนวนตัวกรองอัตโนมัติ มีอยู่ในแผ่นงาน Excel หลังจากรันโค้ดแล้ว โค้ดจะส่งผลลัพธ์ใน หน้าต่างทันที ของ Excel VBA .
ขั้นตอนในการรับข้อมูลด้านล่าง
ขั้นตอน:
- เหมือนเมื่อก่อน เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
Sub CountAutoFilters()
Dim iCount As Long
If ActiveSheet.AutoFilterMode = True Then iCount = 1
Debug.Print "AutoFilterMode Count: " & iCount
End Sub
ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว
- หลังจากนั้น วิ่ง มาโครดังที่เราแสดงให้คุณเห็นในส่วนด้านบน ผลลัพธ์จะปรากฏในภาพด้านล่าง
ดังที่คุณเห็นในภาพด้านบน ในหน้าต่างทันที คุณจะได้รับจำนวนรวมของตัวกรองอัตโนมัติที่เปิดใช้งาน ในใบงานของคุณ
คำอธิบายโค้ด VBA
Dim iCount As Long
ประกาศ ตัวแปร .
If ActiveSheet.AutoFilterMode = True Then iCount = 1
Debug.Print "AutoFilterMode Count: " & iCount
โค้ดสองบรรทัดนี้หมายความว่า ถ้าโหมดตัวกรองอัตโนมัติเป็นจริงสำหรับชีตที่ใช้งานอยู่ จากนั้นเริ่มนับและ พิมพ์จำนวนรวม .
อ่านเพิ่มเติม: VBA เป็นตัวกรองอัตโนมัติที่มีหลายเกณฑ์ในฟิลด์เดียวกันใน Excel (4 วิธี)
3. ใช้ VBA เพื่อตรวจสอบว่ามีการกรองคอลัมน์เฉพาะหรือไม่ใน Excel
สมมติว่าคุณต้องการตรวจสอบว่า คอลัมน์เฉพาะ ในสเปรดชีต Excel ของคุณ ถูกกรองหรือไม่ ด้วย VBA .
มาดูขั้นตอนการทำกันเลย
ขั้นตอน:
- ดังที่แสดงก่อนหน้านี้ เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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
ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว
- ต่อมา เรียกใช้ มาโครแล้วดูที่ภาพต่อไปนี้เพื่อดูผลลัพธ์
ทีนี้ลองพิจารณาภาพด้านบน แม้ว่าคุณจะเห็นว่ามีลูกศรตัวกรองอยู่ใน คอลัมน์ B มาโครกำลังบอกเราว่าไม่มี ดังนั้น หลังจากที่รันโค้ดสำเร็จแล้ว เราสามารถพูดได้ว่า คอลัมน์ B ไม่ได้รับการกรองอัตโนมัติ .
คำอธิบายโค้ด VBA
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
โค้ดนี้อ้างอิงถึง หากตัวกรองอัตโนมัติสำหรับคอลัมน์ 2 หรือคอลัมน์ B เป็นจริงสำหรับชีตที่ใช้งานอยู่ จากนั้นส่งคืน “คอลัมน์ B ถูกกรอง ” ใน Excel MsgBox; มิฉะนั้น จะแสดง “คอลัมน์ B ไม่ถูกกรอง ” ข้อความ
อ่านเพิ่มเติม: วิธีการกรองค่าอัตโนมัติไม่เท่ากับค่าที่แน่นอนด้วย VBA ใน Excel
4. VBA Macro เพื่อตรวจสอบการเปิดใช้ตัวกรองอัตโนมัติในสมุดงาน Excel
ในส่วนนี้ คุณจะได้เรียนรู้วิธีตรวจสอบการเปิดใช้หรือปิดใช้งานตัวกรองอัตโนมัติสำหรับแผ่นงานในสมุดงาน Excel ที่ระบุ .
ขั้นตอนการดำเนินการดังแสดงด้านล่าง
ขั้นตอน:
- ขั้นแรก เปิด Visual Basic Editor จาก นักพัฒนา แท็บและ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
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 ของ Excel กำลังแสดงให้เราเห็นว่าแผ่นงาน “ชุดข้อมูล” มีตัวกรองอัตโนมัติเปิดอยู่ . คุณสามารถใช้โค้ดนี้กับสเปรดชีตทั้งหมดของคุณในเวิร์กบุ๊ก Excel ที่ระบุ
คำอธิบายโค้ด VBA
Dim z As Double
ประกาศ ตัวแปร .
For z = 1 To ThisWorkbook.Sheets.Count
เริ่ม วนซ้ำ จาก แผ่นที่ 1 ถึงจำนวนแผ่นทั้งหมด ของสมุดงานที่มีอยู่
If ThisWorkbook.Sheets(z).AutoFilterMode Then
MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter"
End If
Next
หาก แผ่นงานแรกเปิดโหมดตัวกรองอัตโนมัติ แล้วโยนข้อความใน MsgBox . หลังจากนั้นโค้ด จะสิ้นสุดเงื่อนไข และ ไปที่แผ่นงานถัดไป เพื่อดำเนินการวนซ้ำ มันทำต่อไปจนกว่าจะถึง จำนวนแผ่นทั้งหมด ของสมุดงานปัจจุบัน
อ่านเพิ่มเติม: วิธีการกรองอัตโนมัติและคัดลอกแถวที่มองเห็นได้ด้วย Excel VBA
บทสรุป
โดยสรุป บทความนี้แสดงให้คุณเห็น 4 วิธีง่ายๆ และรวดเร็วในการตรวจสอบว่า AutoFilter เปิดอยู่ ใน Excel ด้วย มาโคร VBA . ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับคุณมาก อย่าลังเลที่จะถามคำถามใด ๆ เกี่ยวกับหัวข้อนี้
บทความที่เกี่ยวข้อง
- [แก้ไข]:วิธีการกรองอัตโนมัติของคลาสช่วงล้มเหลว (5 โซลูชัน)
- ตัวกรองอัตโนมัติ VBA:เรียงลำดับจากน้อยไปหามาก (3 วิธี)