เรียกใช้แมโคร VBA โดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงค่าของเซลล์


1

ฉันมีมาโครที่ทำงานได้อย่างสมบูรณ์ - ยกเว้นว่าฉันต้องเรียกใช้ด้วยตนเอง
ฉันไม่สามารถหาวิธีที่จะให้มันทำงานโดยอัตโนมัติเมื่อฉันเปลี่ยนค่าในเซลล์อื่น

Sub MonthlyMaintHideRowsWithZeroDollars()

' This Macro reads down the dollar column and hides rows with $0 
' so that they do not pull into the proposal

    If Range("B7").Value = "Hide" Then
        Rows("7:7").EntireRow.Hidden = True
    ElseIf Range("B7").Value = "Show" Then
        Rows("7:7").EntireRow.Hidden = False    
    End If
End Sub

คำตอบ:


0

คุณกำลังมองหาWorksheet_changeเหตุการณ์

เกิดขึ้นเมื่อมีการเปลี่ยนแปลงเซลล์บนแผ่นงานโดยผู้ใช้หรือโดยลิงค์ภายนอก

ตัวอย่าง

Sub Worksheet_Change(ByVal Target As Range)
    If Range("B7").Value = "Hide" Then
        Rows("7:7").EntireRow.Hidden = True
    ElseIf Range("B7").Value = "Show" Then
        Rows("7:7").EntireRow.Hidden = False    
    End If
End Sub

ช่วยด้วยวิธี นี้ใช้ได้เมื่อฉันเรียกใช้ แต่จะไม่ทำงานโดยอัตโนมัติเมื่อเซลล์ที่เชื่อมโยงมีการเปลี่ยนแปลง ฉันติดอยู่ ขอบคุณ Ed Private Sub Worksheet_Change (ByVal Target As Range) Sub Sub MonthlyMaintHideRowsWithZeroDollars () '' MonthlyMaintHideRowsWithZeroDollars มาโคร 'แถวมาโครพร้อม $ 0' ถ้าช่วง ("B3") ค่า = "ซ่อน" จากนั้นแถว ("3: 3") .EntireRow.Hidden = True ElseIf Range ("B3"). ค่า = "แสดง" จากนั้นแถว ("3: 3"). EntireRow.Hidden = สิ้นสุดเท็จหาก End Sub
Ed Regis

@EdRegis คุณต้องแทรกคำสั่ง IF ระหว่างsubและend subส่วนหนึ่ง ฉันแก้ไขโพสต์
nixda

ฉันลองสิ่งที่คุณแนะนำ - แมโครยังคงทำงานเมื่อฉันเรียกใช้ด้วยตนเองมันไม่ต้องการที่จะทำงานโดยอัตโนมัติเมื่อฉันพิมพ์ ซ่อนลงใน B7 ????? อาจมีตัวเลือกที่ฉันต้องเปิดให้แมโครทำงานโดยอัตโนมัติเกินกว่า: Private Sub Worksheet_Change (ByVal Target As Range) End Sub
Ed Regis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.