2016-06-02 2 views
1

В листе excel, представленном ниже, я хотел бы, чтобы пересчет был остановлен для верхней части из строки 1-5. И что я имею в виду с пересчетом, так это то, что, например, ячейки M2, H4, S4 имеют формулу today(), и каждый раз, когда я его открываю, он пересчитывает. Я бы хотел, чтобы он подсчитывал один раз и один раз, когда я сохранял, чтобы не пересчитывать снова, как только открылся снова. Какие-либо предложения? Я попыталсяКак остановить автоматический пересчет в excel

Private Sub Workbook_Open() 
    Application.Calculation = xlCalculationManual 
End Sub 

enter image description here

+0

проверьте, если ваше мероприятие workbook_open запущено. Или проверьте значение приложения. Калькуляция на вашем листе –

+0

Если вы хотите, чтобы остальная часть листа вычислялась нормально, вам нужно будет написать макрос в событие BeforeSave, которое записывает значение Today() в ячейки как значения. – Sun

+0

вместо автоматического включения и выключения, замените формулу TODAY() на фиксированную дату. Добавьте кнопку, которая будет обновлять фиксированную дату, когда вы нажмете ее. Таким образом, он будет обновлять информацию только сегодня, когда вы к этому готовы. –

ответ

2

Ну, установка Application.Calculation = xlCalculationManual в момент Workbook_Open не всегда может гарантировать вам желаемый результат, поскольку есть вероятность того, что Excel может быть в xlCalculationAutomatic при открытии файла.

Итак, обходным путем является открытие Excel и установка расчета вручную либо в VBE, либо через меню, а затем откройте файл.
В VBE, введите Application.Calculation = xlCalculationManual в ближайшее окно, затем нажмите Введите, а затем откройте файл.
В Excel для версии 2007, нажмите на Formula Menu, перейдите Calculation Group, в Calculation Options выберите Automatic/Manual. Для более старых версий, Tools > Options > Calculation.

2

не имеют репутацию, чтобы отправить комментарий задать уточняющий вопрос, поэтому я вывешу ответ вместо того, чтобы (сделать предположение о том, что ваш ответ будет) ,

Пока вы никогда не хотите, чтобы эти ячейки пересчитывали (и не против потери формулы), самым простым решением было бы преобразовать их в значения.

простой макрос для достижения этой цели в течение первых 5 строк:

sub ConvertToValues() 
Dim rngToValues as Range 
set rngToValues = YourSheet.UsedRange.Rows("1:5").EntireRow 
rngToValues.Value = rngToValues.Value 
end sub 
0

Я хотел бы предложить оценки функции в VBA на события, которые вы хотите.

Если вы хотите, чтобы функция TODAY рассчитывалась по вашему запросу, я бы создал кнопку с макросом, который переоценивает СЕГОДНЯ.

Как бы это реализовать, это зависит от того, хотите ли вы/должны иметь ячейку в качестве формулы. Если достаточно вычисленного значения, вы можете рассчитать в VBA и установить значение в нужные ячейки. Если вы хотите иметь формулу и сохранить последнее значение TODAY, вы можете установить формулу в ячейку. Range("M2").Formula = Date() & "other formula part"

Самое простое решение установить сегодняшнюю значение в некоторой ячейке, в VBA

Sub Macro1() 

    Range("A5").Value = Date() 

End Sub 
Смежные вопросы