Здравствуйте. Помогите, плз.
Есть макрос, который отслеживает изменения в конкретных ячейках. Вот его часть:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim N_ROW As Long, N_Col As Long
Dim DL_ROL As String
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("S75")) Is Nothing Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Ячейка информационная, менять нельзя!"
End If
......
End Sub
В ячейке S75 находится формула.
Знаю, что можна обойтись защитой листа/книги, но надо без защиты.
Если пользователь делает изменения в ячейке S75, то макрос срабатывает так, как мне надо.
Но в том же макросе есть контроль на изменения в других ячейках (допустим А1). И если такие изменения происходят, то макрос расчитывает даные для ячейки А2, а эти данные уже влияют на на результат в ячейке S75. Таким образом получается что при срабатывании макроса при изменении в ячейке А1 сразу срабатывает часть вышеприведенного кода, потому что меняется значение в ячейке S75.
Проблема в том, что в офисе 2003 и 2007 все хорошо, а вот в офисе 2010 происходит закрытие екселя без всякой ошибки и сохранения. Я методом исключений части кода нашел, что броблема именно в этой части.
Вопрос:
Как заставить макрос реагировать на изменения в ячейке S75, в том случае, если это делает пользователь, а если это изменения в результате изменения исходных данных, внесенных другой частью макроса - то не реагировать. Решение нужно в этом направлении. Изменять настройки екселя не подходит, поскольку файлом полуются клиенты - а им не будешь каждый раз расказывать какие настройки и гдле менять )))
Спасибо.
Есть макрос, который отслеживает изменения в конкретных ячейках. Вот его часть:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim N_ROW As Long, N_Col As Long
Dim DL_ROL As String
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("S75")) Is Nothing Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Ячейка информационная, менять нельзя!"
End If
......
End Sub
В ячейке S75 находится формула.
Знаю, что можна обойтись защитой листа/книги, но надо без защиты.
Если пользователь делает изменения в ячейке S75, то макрос срабатывает так, как мне надо.
Но в том же макросе есть контроль на изменения в других ячейках (допустим А1). И если такие изменения происходят, то макрос расчитывает даные для ячейки А2, а эти данные уже влияют на на результат в ячейке S75. Таким образом получается что при срабатывании макроса при изменении в ячейке А1 сразу срабатывает часть вышеприведенного кода, потому что меняется значение в ячейке S75.
Проблема в том, что в офисе 2003 и 2007 все хорошо, а вот в офисе 2010 происходит закрытие екселя без всякой ошибки и сохранения. Я методом исключений части кода нашел, что броблема именно в этой части.
Вопрос:
Как заставить макрос реагировать на изменения в ячейке S75, в том случае, если это делает пользователь, а если это изменения в результате изменения исходных данных, внесенных другой частью макроса - то не реагировать. Решение нужно в этом направлении. Изменять настройки екселя не подходит, поскольку файлом полуются клиенты - а им не будешь каждый раз расказывать какие настройки и гдле менять )))
Спасибо.
Изменено: - 10.06.2013 18:31:13