Всем доброго времени уважаемые. Снова обращаюсь в Вашей помощи!!! Пробую тут ограничить рукоблудство наших юзверей, простите коллег по работе . И встал передо мной вопрос вопросов: макрос на запрет редактирования более чем одной ячейки я накропал.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
[/vba]
Но что добавить, что бы одновременно он разрешал вставить одну или несколько строчек целиком на лист ???????? [p.s.]не спрашивайте зачем: надо!!!!
Всем доброго времени уважаемые. Снова обращаюсь в Вашей помощи!!! Пробую тут ограничить рукоблудство наших юзверей, простите коллег по работе . И встал передо мной вопрос вопросов: макрос на запрет редактирования более чем одной ячейки я накропал.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
[/vba]
Но что добавить, что бы одновременно он разрешал вставить одну или несколько строчек целиком на лист ???????? [p.s.]не спрашивайте зачем: надо!!!!китин
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then If Target.Count Mod 16384 = 0 Then Else With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End If End Sub
[/vba]
китин, привет может, так? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then If Target.Count Mod 16384 = 0 Then Else With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End If End Sub
У меня почти такой же вариант)) Только удалять строки тоже разрешает. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then With Application If Target.Count = Target.Rows.Count * Columns.Count Then Exit Sub .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
[/vba]
У меня почти такой же вариант)) Только удалять строки тоже разрешает. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then With Application If Target.Count = Target.Rows.Count * Columns.Count Then Exit Sub .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 And Target.Columns.Count <> Columns.Count Then With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
[/vba]
Всем привет! Как вам такой вариант? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 And Target.Columns.Count <> Columns.Count Then With Application .EnableEvents = 0 MsgBox "На этом листе запрещено изменять данные более чем в ОДНОЙ ячейке" .Undo .EnableEvents = 1 End With End If End Sub
If Selection.Count = Selection.Rows.Count * Columns.Count Then Exit Sub
Марина, вариант selection может не сработать если пользователь решит добавить или удалить строку через ПКМ по ячейке. В таком случае selection.count будет равно кол-ву выделенных на листе ячеек, а не кол-ву ячеек, которые пользователь добавил.
If Selection.Count = Selection.Rows.Count * Columns.Count Then Exit Sub
Марина, вариант selection может не сработать если пользователь решит добавить или удалить строку через ПКМ по ячейке. В таком случае selection.count будет равно кол-ву выделенных на листе ячеек, а не кол-ву ячеек, которые пользователь добавил.Mikael