Работает один раз, а потом больше никогда - PullRequest
0 голосов
/ 19 июня 2020

Я отправил в Stack Overflow вопрос о создании макроса Excel для добавления / вычитания значения в столбце из предыдущего столбца, а затем очистки текущего столбца.

Макрос обновления значения ячейки Excel

Код работал в течение многих лет в офисе 2007, но больше не работает в офисе 365 (2016/2019).

Если F1 имеет значение 100,00 фунтов стерлингов, и я набираю - 50 в G1, F1 меняется на 50,00 фунтов стерлингов, а G1 пуст. Каждая ячейка в столбце F изменяется на сумму, указанную в строке в столбце G.

В версиях Excel для Office 365 этот макрос выполняется один раз, а затем не запускается снова, пока я не закрою и снова не открою документ. Изменилось ли что-то в способе работы макросов, которое могло бы вызвать это?

Изменить: вот код (прикрепленный к листу 1), немного измененный по сравнению с моим предыдущим вопросом для работы с столбцом G.

Ответы [ 3 ]

1 голос
/ 20 июня 2020

У меня недостаточно репутации, чтобы сделать комментарий ... Трудно понять, не видя вашего полного кода. Но если в вашем коде есть

 application.enableEvents = false 

, вам нужно будет в конце концов вернуть его в True. Или события изменения рабочего листа не сработают, пока книга не будет закрыта и снова не открыта

0 голосов
/ 19 июня 2020

Я думаю, что с 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, но кто знает ...

0 голосов
/ 19 июня 2020

Похоже, формулы хватит. Однако ячейка не может ссылаться на себя, вы можете попробовать,

E1: =F1+G1

, где E1 - это новая ячейка с суммой F1 и G1, потому что вы вводите ее знаковый оператор, то есть - или +, вы можете оставить это как дополнение в ячейке E1. Чтобы использовать это для столбца, просто перетащите из нижнего левого квадрата в ячейку E1 полностью вниз до нужного номера строки. sh будет обновляться каждый раз при изменении значения.

excel image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...