Vba: วิธีเรียกใช้แมโครเมื่อค่าของเซลล์เปลี่ยนแปลง


คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อเรียกใช้แมโครเมื่อค่าของเซลล์ที่ระบุเปลี่ยนแปลง:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

ตัวอย่างนี้จะทำให้แมโครที่เรียกว่า MultiplyMacro ทำงานเมื่อค่าของเซลล์ A1 เปลี่ยนแปลง

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

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

สมมติว่าเราสร้างมาโครต่อไปนี้ชื่อ MultiplyMacro ซึ่งจะคูณค่าในเซลล์ A1 และ B1 และแสดงผลลัพธ์ในเซลล์ C1 :

 SubMultiplyMacro ()
    Range(" C1 ") = Range(" A1 ") * Range(" B1 ")
End Sub

ตัวอย่างเช่น สมมติว่าเรามีค่า 12 ในเซลล์ A1 และค่า 3 ในเซลล์ B1

หากเราเรียกใช้แมโครนี้ เราจะได้รับผลลัพธ์ดังต่อไปนี้:

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

ในการดำเนินการนี้ เราสามารถคลิกขวาที่ชื่อชีตแล้วคลิก Show Code :

ในหน้าต่างแก้ไขโค้ดที่ปรากฏขึ้น คุณสามารถวางโค้ดต่อไปนี้ได้:

 Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = " $A$1 " Then
        Call MultiplyMacro
    End If
End Sub

ภาพหน้าจอต่อไปนี้แสดงวิธีดำเนินการนี้ในทางปฏิบัติ:

จากนั้นเราสามารถปิดโปรแกรมแก้ไข VB ได้

ตอนนี้เมื่อใดก็ตามที่เราเปลี่ยนค่าในเซลล์ A1 มาโครที่เรียกว่า MultiplyMacro จะทำงานและทำการคูณโดยอัตโนมัติโดยใช้ค่าใหม่ในเซลล์ A1

ตัวอย่างเช่น สมมติว่าเราเปลี่ยนค่าของเซลล์ A1 เป็น 10 ทันทีที่เราเปลี่ยนค่าและกด Enter แมโครจะทำงาน:

มาโครคูณ 10 ด้วย 3 และแสดงผลลัพธ์ในเซลล์ C2

หมายเหตุ : ถ้าคุณต้องการเรียกใช้แมโครเมื่อเซลล์ในช่วงเฉพาะเปลี่ยนแปลง คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

 Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range(" A1:B1 ")) Is Nothing Then
        Call MultiplyMacro
    End If
End Sub

ซึ่งจะทำให้แมโครที่เรียกว่า MultiplyMacro ทำงานหากเซลล์ใดๆ ในช่วง A1:B1 เปลี่ยนแปลง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ใน VBA:

VBA: วิธีนับจำนวนแผ่นงานในสมุดงาน
VBA: วิธีดึงข้อมูลจากสมุดงานอื่น
VBA: วิธีเพิ่มแผ่นงานใหม่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *