и спасибо, что прочитали мой пост. Я столкнулся со странным (на мой взгляд) поведением
события Worksheet_Calculate в Excel (Windows 7 Ultimate, Excel 2010), позвольте мне описать проблему, которую я имею, предоставив вам настройку.
Возьмите рабочую книгу с 2 листами. Ячейка листа 2 имеет формулу = Sheet1! A1, свойство EnableCalculation для Sheet2 установлено в TRUE, а в объекте Sheet2 есть Sub
Private Sub Worksheet_Calculate()
i = MsgBox("Value " & Me.Range("A1").Value, vbOKOnly)
End Sub
В Module1 есть SUB
Public Sub mySub()
Application.EnableEvents = False
ThisWorkbook.Worksheets(2).EnableCalculation = True
ThisWorkbook.Worksheets(2).EnableCalculation = False
Application.EnableEvents = True
End Sub
Теперь введите 1 в ячейке Sheet1 A1 - появится окно с сообщением «Значение 1». Затем установите для свойства EnableCalculation Sheet2 значение FALSE и введите 2 в ячейку Sheet1 A1 - ничего не происходит. Теперь запустите mySub в модуле 1 - ячейка A1 на Sheet2 отображает 2, а свойство EnableCalculation для Sheet2 имеет значение FALSE. Все идет нормально. Теперь введите 3 в ячейке Sheet1 A1 - появится окно сообщения со значением «Value 2»
Может показаться, что во время выполнения mySub сработало событие Calculation (даже если для Application.EnableEvents было задано значение FALSE), а значение 2 было сохранено (где?), А затем это событие было сброшено при вводе 3 Ячейка A1 на Листе 1 (хотя для параметра EnableCalculation для Листа 2 установлено значение FALSE). Любая подсказка, что здесь происходит и как «исправить» это странное поведение?
Большое спасибо.