powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить условия пересчета при загрузке
16 сообщений из 16, страница 1 из 1
Как определить условия пересчета при загрузке
    #35602198
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, кто может.

Как определить при загрузке эксель-файла в его автомакросе какой вид пересчета таблиц в Экселе установлен: автоматический или ручной?
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602303
IgrokB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При загрузке файла нужно только определить, или установить?
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602541
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В файл с таблицей встроен макрос, который выполняется автоматически при загрузке файла. Хотелось бы, чтобы этот макрос определял какой режим пересчета установлен в программе Эксель и по определенному условию (радиокнопки в таблице с переключением режимов) изменял бы этот режим пересчета. Если что непонятно еще уточню. Спасибо за участие.
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602616
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help:

Calculation property
Application.Calculation=ОписаниеxlAutomaticАвтоматическиxlSemiAutomaticАвтоматически кроме таблицxlManualВручную
Calculate method
To calculateFollow this example All open workbooksApplication.Calculate (or just Calculate) A specific worksheetWorksheets(1).Calculate A specified rangeWorksheets(1).Rows(2).Calculate
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602617
IgrokB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может так, а еще лучше бы - файл примера...



If Application.Calculation = xlManual Then _

' Ваш код
Else
' Ваш код

End If
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602653
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgrokB
If Application.Calculation = xlManual Then _

' Ваш код
Else
' Ваш код

End If
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public CalculationState As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.Calculation = CalculationOldState
End Sub

Private Sub Workbook_Open()
    CalculationOldState = Application.Calculation
    Application.Calculation = xlCalculationManual
    '.....
End Sub
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602759
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgrokB

Спасибо! Именно это я имел ввиду! Но что-то клинило в голове.


AndreTM
c вашим кодом пока не разобрался. Чувствую мысль глубокая, но пока не дохожу...

Public CalculationState As Long ' наверное CalculationOLDState ?

Private Sub Workbook_BeforeClose(Cancel As Boolean) ' объявляем переменную
Application.Calculation = CalculationOldState ' присваиваем
End Sub

Private Sub Workbook_Open() ' открывается книга - срабатывает макрос
CalculationOldState = Application.Calculation ' переменной присваивается (событие, метод?)
Application.Calculation = xlCalculationManual ' ... переключается на ручной пересчет
'.....
End Sub

Все понятно. Всем спасибо! Теперь держись!
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35602767
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public CalculationOldState As Long ' Объявляем переменную

Private Sub Workbook_Open() ' событие открытия книги
    CalculationOldState = Application.Calculation ' в глобальную переменную заносим состояние пересчета
    Application.Calculation = xlCalculationManual ' устанавливаем нужное нам состояние
    '..... работаем
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) ' событие закрытия книги
    Application.Calculation = CalculationOldState ' восстанавливаем состояние пересчета, что было при открытии
End Sub
Так понятнее?
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35675150
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот - сам пользуюсь этой штукой - переключение режимов пересчета. Однако время от времени наталкиваюсь на грабли - при выполнении строки
Код: plaintext
Application.Calculation = xlCalculationManual
или другого режима время от времени нарываюсь на ошибку:
авторRun-time error '1004':

Method 'Calculation' of object '_Application' failed.
Может кто сталкивался? Может кто подскажет, как бороть?
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35676382
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужель только у меня такая проблема возникает??
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35682205
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Укей. Поставлю вопрос по-другому :)
Может кто-то подскажет, при каких условиях можно менять режим пересчета формул в Excel? Есть ли какое-то влияние состояния документа (скрыт, свернут и проч) на возможность вызова метода Application.Calculation??
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35683061
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри в настройках пересчета открываемого файла. Если стоит Ручной пересчет и галочка на Итерациях, то убери галочку.
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35683088
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Посмотри в настройках пересчета открываемого файла. Если стоит Ручной пересчет и галочка на Итерациях, то убери галочку.

не, эту фишку по инету я нашел - у меня не тот случай.
единственное что - у меня документ скрыт когда я пытаюсь в нем пересчет переключать (меню Окно-Скрыть). И я заметил, что попасть в меню Сервис-Параметры нельзя в этом случае (неактивное оно)
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35713254
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел, Как говориццо, себе - и спешу поделиться со всеми :) Оказывается, использование свойства Calculation, по моим наблюдениям, возможно только в том случае, если в Ёкселе открыт ХОТЯ БЫ один документ, и у него отображен ХОТЯ БЫ один лист. В противном случае установка данного свойства приводит к exception.
Как же его обойти? Да оказывается достаточно просто!!
Вот он - первосырец на сайте мелкомягких:
мелкомягкие для арабов
вот кусочек интересного сырца:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
' Auto_Open macros run automatically when you open the workbook.

Sub Auto_Open()

   With ThisWorkbook.Worksheets("Sheet1")
...
       .EnableCalculation = False

   End With

End Sub
Тобишь устанавливая в цикле указанное свойство для КОНКРЕТНОГО документа можно выставлять свойство автовычисления формул на листах. Тут же можно и придумать как в автомате одни листы пересчитывать, а другие - нет.
Умельцы набросали такой вот макросик на автооткрытие документа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Workbook_Open()
On Error GoTo err

Dim iWSheet As Worksheet
For Each iWSheet In Application.ActiveWorkbook.Worksheets
If iWSheet.Cells( 1 ,  1 ).Value = "Стоп" Then iWSheet.EnableCalculation = False _
                               Else iWSheet.EnableCalculation = True
Next

Exit Sub
err:
End Sub
спионерено тут

Таким чином, возможно, установка свойств автопересчета листа, а не приложения, является более правильным, поскольку не гадит людям в случае ошибки при повторном открытии Ёкселя для других целей (открываем документ - ставим ручной пересчет - автопересчет не включаем по какой-то причине - при следующем открытии любого другого документа имеем грабли в виде ручного пересчета формул)
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35713257
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри за путание в ссылках-урлах :)
...
Рейтинг: 0 / 0
Как определить условия пересчета при загрузке
    #35713386
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,
Модератор:
Бывает, код ссылок я поправил.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить условия пересчета при загрузке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]