คุณสามารถใช้ฟังก์ชั่นการเปลี่ยนแปลงแผ่นงานใน vba สิ่งที่ต้องการ
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub
Application.enableevents = False
ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)"
Application.enableevents = True
End Sub
เมื่อใดก็ตามที่แผ่นงานเปลี่ยนจะตรวจสอบว่าเซลล์ที่เปลี่ยนแปลงนั้นเป็น e7 หรือ e8 หรือไม่ ถ้ามันเป็นสูตร
=if(e7="",e8*765,e7*960)
ในเซลล์ A4 หากคุณใส่ค่าในเซลล์ A4 จะคงอยู่จนกว่าคุณจะเปลี่ยน e7 หรือ e8 อีกครั้ง คุณอาจต้องปรับตัวเพื่อให้ได้สิ่งที่คุณต้องการ แต่มีแนวคิดอยู่ที่นั่น
สิ่งนี้จะไปในวัตถุแผ่นงานภายใต้วัตถุ Microsoft Excel ใน vba
แก้ไข:
เพื่อให้สอดคล้องกับความคิดเห็น
รหัสใหม่อันนี้จะทำอะไรถ้าเซลล์มีมูลค่าเพิ่มหรือเปลี่ยนแปลงมันจะไม่ทำงานถ้าคุณลบค่า
จากนั้นจะตรวจสอบว่ามีการแก้ไข e7 หรือไม่ หากเป็น e8 จะถูกลบ หากเราไม่ทราบว่ามีการแก้ไข e8 ดังนั้น e7 จะถูกลบ สูตรยังคงเหมือนเดิม
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub
Application.EnableEvents = False
ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)"
If Intersect(target, Range("e7")) Is Nothing Then
ActiveSheet.Range("e7").ClearContents
Else
ActiveSheet.Range("e8").ClearContents
End If
Application.EnableEvents = True
End Sub