รหัส VBA สำหรับการกรองคอลัมน์โดยใช้กล่องป้อนข้อมูล


0

ฉันกำลังมองหาเพื่อกรองคอลัมน์ตามรหัสที่ผู้ใช้ใส่ลงในกล่องอินพุต

ฉันใช้รหัสต่อไปนี้:

Sub Filter()
'
' Filter Macro
Dim strName As String
strName = InputBox(“What DMA would you like to search for?”)
Selection.AutoFilter
ActiveSheet.Range("$A$1:$AS$355969").AutoFilter Field:=3, Criteria1:="=*" & strName & “ * ”, Operator:=xlAnd
End Sub

แต่มันแสดงข้อผิดพลาดของคอมไพล์: ข้อผิดพลาดทางไวยากรณ์ใน Excel แมโคร

มีใครช่วยฉันได้ไหม

ขอบคุณ Dhivya S


1
สัญลักษณ์คำพูดไม่ถูกต้องใน InputBox arg "แทนที่พวกเขาด้วยราคาสองครั้ง
Akina

ใช่สังเกตการผสมผสานของเครื่องหมายคำพูดคู่ "และ"
spikey_richie

เฮ้พวกขอบคุณที่ทราบข้อผิดพลาด ตอนนี้ปัญหาคือ InputBox สามารถมองเห็นได้ด้วยการเรียกใช้แมโคร แต่ข้อมูลที่กรองจะไม่แสดง ฉันควรทำอย่างไร?
Dhivya Sethu

คำตอบ:


0

ฉันจะสมมติว่าคุณต้องการจับคู่ไวด์การ์ดดังนั้นคุณไม่ต้องการพื้นที่สีขาวเพิ่มเติมในไวด์การ์ดที่สอง นอกจากนี้คุณจำเป็นต้องแก้ไข "" และปิดการใช้งาน ScreenUpdating เป็นความคิดที่ดี นอกจากนี้คุณยังสามารถใช้ With statememt สำหรับช่วงของคุณ ควรใช้ชื่อชีตที่ชัดเจนมากกว่า Activesheet ในกรณีที่ Activesheet ปัจจุบันไม่ใช่ที่คุณคาดไว้

Option Explicit
Public Sub Filter()
    Application.ScreenUpdating = False
    Dim strName As String
    strName = InputBox("What DMA would you like to search for?")
    With ActiveSheet.Range("$A$1:$AS$355969")
        .AutoFilter
        .AutoFilter Field:=3, Criteria1:="*" & strName & "*"
    End With
    Application.ScreenUpdating = True
End Sub

สวัสดีขอบคุณสำหรับการเข้ารหัส แต่มันก็ยังไม่ทำงาน มันเพิ่งแสดงตัวเลือกที่ถูกกรองในคอลัมน์ที่ 3 แต่ไม่แสดงค่าที่ถูกกรอง ฉันมีช่องว่างเปล่าตรงนี้และในช่วงชีตที่ใช้งานอยู่ มันจะทำให้ผู้ออกบัตรหรือไม่?
Dhivya Sethu

คุณมีส่วนหัวใน A1 หรือไม่? คุณสามารถแสดงตัวอย่างเล็ก ๆ ของ 5 คอลัมน์แรกที่มีตัวกรองที่คาดว่าจะเกิดขึ้นได้ (รวมถึงแถวที่ 1 ในข้อมูล / ภาพ)
QHarr

ใช่ฉันมีส่วนหัวใน A1 จริงๆแล้วฉันไม่รู้ว่าจะเพิ่มรูปภาพในความคิดเห็นนี้ได้อย่างไร
Dhivya Sethu

0

คุณอาจลองใช้รหัสง่ายๆนี้เพื่อกรอง:

Sub InputFilter()
Dim strInput As String
strInput = InputBox("Enter your value to filter on")
Selection.AutoFilter
ActiveSheet.Range("$A$60:$A$65").AutoFilter Field:=1, Criteria1:=strInput
End Sub

NBจำFieldค่าในรหัสที่สามารถปรับเกณฑ์ถ้าตรงกับคอลัมน์ที่ 2 ในการกรองแล้วมันควรจะเป็นField:=2

หมายเหตุ ปรับการอ้างอิงเซลล์ตามต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.