Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ตัวกรองอัตโนมัติ ของ Excel คุณลักษณะมีประสิทธิภาพมากในการดึงข้อมูลตามเงื่อนไขบางประการ แต่บางครั้งเนื่องจากปัญหาทางเทคนิค ตัวกรองอัตโนมัติ ถูกซ่อนหรือแม้ว่าไม่มีตัวกรอง Excel แสดงว่ามี ในกรณีนั้น แทบจะเป็นไปไม่ได้เลยที่จะเข้าใจว่า ตัวกรองอัตโนมัติ เปิดใช้งานสำหรับแผ่นงาน Excel หรือไม่ การใช้งาน VBA เป็นวิธีที่มีประสิทธิภาพ รวดเร็วที่สุด และปลอดภัยที่สุดในการรันการดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงให้คุณเห็น 4 วิธีง่ายๆ และรวดเร็วในการตรวจสอบว่า AutoFilter เปิดอยู่ ใน Excel ด้วย มาโคร VBA .

ดาวน์โหลดสมุดงาน

คุณสามารถดาวน์โหลดเวิร์กบุ๊ก Excel แบบฝึกหัดฟรีได้จากที่นี่

4 วิธีด่วนด้วย VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ใน Excel หรือไม่

จากส่วนนี้ คุณจะได้เรียนรู้วิธีตรวจสอบว่า AutoFilter เปิดอยู่หรือไม่ ใน Excel ด้วย VBA ได้ 4 วิธี

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ด้านบนคือ ชุดข้อมูลตัวอย่าง ว่าบทความนี้จะปฏิบัติตามเพื่ออธิบายขั้นตอนต่างๆ

1. ฝัง VBA เพื่อตรวจสอบว่า AutoFilter เปิดหรือปิดในแผ่นงาน Excel

ในส่วนนี้ คุณจะได้เรียนรู้วิธีตรวจสอบว่า AutoFilter เปิดอยู่ในเวิร์กชีต Excel หรือไม่ ด้วย VBA . ขั้นตอนการดำเนินการดังแสดงด้านล่าง

ขั้นตอน:

  • ในตอนแรก ให้กด Alt + F11 บนแป้นพิมพ์ของคุณหรือไปที่แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • ถัดไป ในหน้าต่างรหัสป๊อปอัป จากแถบเมนู ให้คลิก แทรก -> โมดูล .

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างโค้ด
Sub AutoFilterCheck()
If ActiveSheet.AutoFilterMode = True Then
MsgBox "Auto Filter is turned on"
Else
MsgBox "Auto Filter is turned off"
End If
End Sub

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • ตอนนี้ กด F5 บนแป้นพิมพ์หรือจากแถบเมนู ให้เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm . คุณยังสามารถคลิกที่ไอคอนการวิ่งขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

หลังจากรันโค้ดสำเร็จแล้ว ให้ดูภาพต่อไปนี้เพื่อดูผลลัพธ์

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ตอนนี้ดูภาพด้านบน แม้ว่าจะไม่มีลูกศรตัวกรองในชุดข้อมูล แต่ 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • หลังจากนั้น วิ่ง มาโครดังที่เราแสดงให้คุณเห็นในส่วนด้านบน ผลลัพธ์จะปรากฏในภาพด้านล่าง

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ดังที่คุณเห็นในภาพด้านบน ในหน้าต่างทันที คุณจะได้รับจำนวนรวมของตัวกรองอัตโนมัติที่เปิดใช้งาน ในใบงานของคุณ

คำอธิบายโค้ด 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • ต่อมา เรียกใช้ มาโครแล้วดูที่ภาพต่อไปนี้เพื่อดูผลลัพธ์

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ทีนี้ลองพิจารณาภาพด้านบน แม้ว่าคุณจะเห็นว่ามีลูกศรตัวกรองอยู่ใน คอลัมน์ 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

ตอนนี้รหัสของคุณพร้อมใช้งานแล้ว

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

  • ต่อไป เรียกใช้ มาโคร ตอนนี้ ดูภาพต่อไปนี้เพื่อดูผลลัพธ์

Excel VBA เพื่อตรวจสอบว่า AutoFilter เปิดอยู่ (4 วิธีง่ายๆ)

ดังที่คุณเห็นในภาพด้านบน สมุดงานของเรามีแผ่นงานชื่อ “ชุดข้อมูล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 วิธี)