Здравствуйте всем. Прошу сильно не пинать, но в виду моего незнания VBA имею проблему как разрешить или запретить работать макросу вида:
| Код |
|---|
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim new_value
Dim r As Range
Select Case Sh.Name
Case "Лист1"
Set r = Application.Intersect(Target, Range("Лист1!$A1:$A100"))
Case Else
Set r = Nothing
End Select
If r Is Nothing Then Exit Sub
If Target.Rows.Count * Target.Columns.Count > 1 Then
Application.Undo
Exit Sub
End If
new_value = Target.Value
Application.EnableEvents = False
Application.Undo
If Len(Target.Value) = 0 Then
Target.Value = new_value
End If
Application.EnableEvents = True
End Sub
|
Макрос честно стырен из интернета и делает то что мне нужно, а именно не позволяет изменять пользователю уже записанные данные в столбце А.
Я хочу прописать условие, чтобы макрос можно было отключать, например по значению в ячейке С1. Но что бы я ни делал с операторами If и Then это приводит только к прекращению работы макроса насовсем. Видимо я что то не так делаю. Прошу помощи у знающих людей.
обращаю внимание что макрос работает только в модуле книги, в модуле листа он не работает.
Изменено: - 04.02.2019 12:27:09