ซ่อนแถวตามค่าของเซลล์ที่ระบุ


0
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1").Value = "Passed" Then
        Rows("2:5").EntireRow.Hidden = True
    ElseIf Range("A1").Value = "Failed" Then
        Rows("2:5").EntireRow.Hidden = False

    End If
End Sub

ฉันกำลังเพิ่มเข้าไปในโมดูล VBA ปกติ เมื่อฉันพยายามเรียกใช้ระบบจะเปิดหน้าจอมาโคร ฉันต้องการให้มันทำงานในพื้นหลังเพื่อให้ทุกอย่างที่ฉันพิมพ์ผ่านบนแถว A1 2 - 5 ซ่อนโดยอัตโนมัติ

ฉันใช้ Excel 2012 โปรดช่วยด้วย ขอบคุณ :-)


ขอโทษ ฉันใช้ Excel 2010
746094

คำตอบ:


2

อย่าเพิ่มลงในโมดูล VBA ปกติ วางไว้ในโมดูลของแผ่นงานที่คุณต้องการให้สิ่งนี้เกิดขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

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

หากคุณต้องการให้มันทำงานบนกระดาษหลายแผ่นคุณมีสองสามตัวเลือก คุณสามารถใส่รหัสตามที่อยู่ในแต่ละวัตถุแผ่นงานหรือคุณสามารถใส่รหัสในโมดูลและเพิ่มการโทรไปยังแต่ละแผ่นงาน แต่ละแผ่นจะมีลักษณะดังนี้:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call PassFailCheck(Target)
End Sub

จากนั้นคุณสามารถใส่รหัสจำนวนมากในโมดูลดังนี้:

Sub PassFailCheck()
    If Range("A1").Value = "Passed" Then
        Rows("2:5").EntireRow.Hidden = True
    ElseIf Range("A1").Value = "Failed" Then
        Rows("2:5").EntireRow.Hidden = False
    End If
End Sub

ตัวเลือกที่สองนั้นซับซ้อนกว่าเล็กน้อย แต่การบำรุงรักษาง่ายขึ้นหากคุณต้องการเปลี่ยนแปลงรหัสเป็นประจำ

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