你只需要跟蹤你的三個細胞的變化狀況,當兩個都變了,像這樣的
Private Sub Worksheet_Change(ByVal Target As Range)
Static TrackChange As Integer
On Error GoTo EH
If Not Application.Intersect(Target, Me.Cells(1, 1)) Is Nothing Then
TrackChange = TrackChange Or 1 ' Set bit 0
End If
If Not Application.Intersect(Target, Me.Cells(2, 1)) Is Nothing Then
TrackChange = TrackChange Or 2 ' Set bit 1
End If
If Not Application.Intersect(Target, Me.Cells(3, 1)) Is Nothing Then
TrackChange = TrackChange Or 4 ' Set bit 2
End If
Debug.Print TrackChange
Select Case TrackChange
Case 3 ' A1, A2 changed
Application.EnableEvents = False
' update A3
Me.Cells(3, 1) = Me.Cells(1, 1) + Me.Cells(2, 1)
TrackChange = 0
Case 5 ' A1, A3 changed
Application.EnableEvents = False
' update A2
Me.Cells(2, 1) = Me.Cells(1, 1) + Me.Cells(3, 1)
TrackChange = 0
Case 6 ' A2, A3 changed
Application.EnableEvents = False
' update A1
Me.Cells(1, 1) = Me.Cells(2, 1) + Me.Cells(3, 1)
TrackChange = 0
Case 7 ' A1, A2, A3 changed
TrackChange = 0
End Select
EH:
Application.EnableEvents = True
End Sub
我能想到的多種方式去採取行動。 (1)使用工作表更改事件來查看是否填充了兩個單元格,從而允許您計算第三個單元格(2)當用戶更改哪個單元格並始終計算基於第三個單元格的單元格時保留跟蹤(具有某種時間戳)在最後改變的兩個單元上(3)使用'userform'來代替。通過選項按鈕,複選框和每個文本框上的多個事件,還有很多方法可以解決這個問題。所以,對我個人而言,這個問題其實有點太廣泛而無法回答(就像現在這樣)。 – Ralph