Я думаю, что с Office 365 все в порядке ...
Чтобы работать, как вы объясняете, код должен выглядеть так:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim FirstNum As Currency
Dim SecNum As Currency
If Target.Column = 3 Then 'Only Runs if Cell being changed is in column C, Might need to be Columns
FirstNum = Target.Offset(0, -1).Value ' Value in Column B
SecNum = Target.Value ' Value being typed in C
Target.Offset(0, -1).Value = FirstNum - SecNum ' Makes Cell B equal to difference of previous value and value typed in C
Target.Clear
End If
End Sub
Но вы должны понимать, что этот код работает только для изменения ячеек в столбце C: C. Вариант, который вы получили шесть лет назад, работал только в той же колонке, но по вертикали. Я имею в виду изменение C2
, раньше он изменял C1
. Но был баг. Если вы попытаетесь изменить C1
, он попытается установить смещение -1, нулевая строка не существует в Excel и вернет ошибку ...
Я не могу понять, как событие сработало хотя бы один раз для диапазоны G1
, F1
. Это может сработать только в том случае, если некоторые ссылки существуют в листе или вы адаптировали код, и в таком случае реальный используемый код даст нам возможность проанализировать и сообщить вам, не предполагая, где проблема . Не думаю, что дело в версии Office, но кто знает ...