Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запрет на изменение более одной ячейки с добавлением строки. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрет на изменение более одной ячейки с добавлением строки. (Макросы/Sub)
Запрет на изменение более одной ячейки с добавлением строки.
китин Дата: Среда, 27.12.2017, 12:56 | Сообщение № 1
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Всем доброго времени уважаемые. Снова обращаюсь в Вашей помощи!!! pray
Пробую тут ограничить рукоблудство наших юзверей, простите коллег по работе :D . И встал передо мной вопрос вопросов: макрос на запрет редактирования более чем одной ячейки я накропал.

Но что добавить, что бы одновременно он разрешал вставить одну или несколько строчек целиком на лист ????????
[p.s.]не спрашивайте зачем: надо!!!!
К сообщению приложен файл: 3904464.xlsm (26.3 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Среда, 27.12.2017, 12:57
 
Ответить
СообщениеВсем доброго времени уважаемые. Снова обращаюсь в Вашей помощи!!! pray
Пробую тут ограничить рукоблудство наших юзверей, простите коллег по работе :D . И встал передо мной вопрос вопросов: макрос на запрет редактирования более чем одной ячейки я накропал.

Но что добавить, что бы одновременно он разрешал вставить одну или несколько строчек целиком на лист ????????
[p.s.]не спрашивайте зачем: надо!!!!

Автор - китин
Дата добавления - 27.12.2017 в 12:56
nilem Дата: Среда, 27.12.2017, 13:19 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1612
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
китин, привет
может, так?
[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]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениекитин, привет
может, так?
[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]

Автор - nilem
Дата добавления - 27.12.2017 в 13:19
китин Дата: Среда, 27.12.2017, 13:22 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
nilem, привет. да, оно. спасибо. совсем заработался . пора в отпуск booze beer wine


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениеnilem, привет. да, оно. спасибо. совсем заработался . пора в отпуск booze beer wine

Автор - китин
Дата добавления - 27.12.2017 в 13:22
Manyasha Дата: Среда, 27.12.2017, 13:27 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
У меня почти такой же вариант))
Только удалять строки тоже разрешает.
[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]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеУ меня почти такой же вариант))
Только удалять строки тоже разрешает.
[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]

Автор - Manyasha
Дата добавления - 27.12.2017 в 13:27
китин Дата: Среда, 27.12.2017, 13:33 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Спасибо Марина.
[vba]
Код
Selection.Count
[/vba]
пытался что то в этом роде сделать, но умишка не хватило :'(


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Среда, 27.12.2017, 13:34
 
Ответить
СообщениеСпасибо Марина.
[vba]
Код
Selection.Count
[/vba]
пытался что то в этом роде сделать, но умишка не хватило :'(

Автор - китин
Дата добавления - 27.12.2017 в 13:33
Mikael Дата: Среда, 27.12.2017, 13:46 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
Всем привет! Как вам такой вариант?
[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
[/vba]


Сообщение отредактировал Mikael - Среда, 27.12.2017, 13:51
 
Ответить
СообщениеВсем привет! Как вам такой вариант?
[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
[/vba]

Автор - Mikael
Дата добавления - 27.12.2017 в 13:46
китин Дата: Среда, 27.12.2017, 13:56 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Как вам такой вариант?

спасибо, рабочий вариант


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
Как вам такой вариант?

спасибо, рабочий вариант

Автор - китин
Дата добавления - 27.12.2017 в 13:56
Mikael Дата: Среда, 27.12.2017, 14:07 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
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
Дата добавления - 27.12.2017 в 14:07
Manyasha Дата: Среда, 27.12.2017, 14:50 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Mikael, а ну да, спасибо!)
Поправила на Target.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеMikael, а ну да, спасибо!)
Поправила на Target.

Автор - Manyasha
Дата добавления - 27.12.2017 в 14:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрет на изменение более одной ячейки с добавлением строки. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!