Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
golan77
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 2
1

Запрет удаления содержимого нескольких ячеек в строке при установке значения в ячейке

22.10.2015, 08:49. Просмотров 840. Ответов 3
Метки нет (Все метки)

Добрый день
К сожалению не смог решить сам свою задачу, прошу помощи

Есть таблица excel с диапазоном A1:F10
Необходимо запретить удаление содержимого строки в диапазоне A1:E1 если в ячейке F1 установлено значение 1, а если не установлено то не запрещать.
Итак для каждой строки в таблице, т.е. проверять стоит ли значение 1 в ячейке F2, F3, F4...F10 и если да то запретить удаление содержимого строки в диапазоне A2:E2, A3:E3 и т.д., если нет разрешить.

Добавлено через 2 часа 54 минуты
Написал код для одного диапазона таблицы
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("F1") = 1 Then
         If Not Intersect(Range("A1:E1"), Target) Is Nothing Then
            Application.EnableEvents = False
                Application.Undo
                MsgBox "Изменение ячеек запрещено", vbCritical, "Нарушение процедуры"
            Application.EnableEvents = True
         End If
End If
End Sub
Подскажите как переделать код чтобы он работал для каждого следующего диапазона в строках таблицы
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2015, 08:49
Ответы с готовыми решениями:

Объединение содержимого ячеек в одну при нескольких условиях
Доброго времени суток, Уважаемые. Подскажите, пожалуйста, как с помощью...

Объединение содержимого нескольких ячеек при различных условиях
Excel Т.е. мне должны предоставить документы (список документов - 1-й...

Перемещение содержимого ячейки Б в ячейку А при удалении содержимого в ячейке А
Суть проблемы следующая. Имеется диапазон ячеек с текстом в каждой. При...

Скопировать значения ячеек, ориентируясь по соседней ячейке
Здравствуйте, подскажите, пожалуйста как можно сделать такую манипуляцию: ...

Из нескольких ячеек записать значения в несколько TextBox
Можно ли переписать этот кусок в виде цикла? TextBox1.Text = Cells(1,...

3
k61
70 / 69 / 29
Регистрация: 13.10.2014
Сообщений: 149
22.10.2015, 09:03 2
...
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1:e10]) Is Nothing Then Exit Sub
If Not IsEmpty(Target) Then Exit Sub
If Cells(Target.Row, 6) <> 1 Then Exit Sub
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End Sub
0
Апострофф
Заблокирован
22.10.2015, 09:04 3
Лучший ответ Сообщение было отмечено golan77 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:E10"), Target) Is Nothing Then
  If Cells(Target.Row, 6) = 1 Then
    Application.EnableEvents = False
      Application.Undo
      MsgBox "Изменение ячеек запрещено", vbCritical, "Нарушение процедуры"
    Application.EnableEvents = True
  End If
End If
End Sub
1
golan77
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 2
22.10.2015, 09:20  [ТС] 4
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1:e10]) Is Nothing Then Exit Sub
If Not IsEmpty(Target) Then Exit Sub
If Cells(Target.Row, 6) <> 1 Then Exit Sub
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End Sub
Спасибо за ответ, но к сожалению ваш код не работает если выделить сразу несколько ячеек, происходит удаление. Необходимо запретить удаление содержимого ячеек если сразу выделить несколько

Добавлено через 1 минуту
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1:E10"), Target) Is Nothing Then
If Cells(Target.Row, 6) = 1 Then
Application.EnableEvents = False
Application.Undo
MsgBox "Изменение ячеек запрещено", vbCritical, "Нарушение процедуры"
Application.EnableEvents = True
End If
End If
End Sub
Спасибо, а возможно при этом сделать исключения для определенных столбцов в таблице?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2015, 09:20

Автозаполнение при наборе в ячейке при нескольких условиях
В екселе есть такая функция, но есть но, она может виводить перечень только с...

Запрет изменения формата ячеек при работе с массивом
Нашел на просторах сети подходящую функцию: Function ArrAutofilterEx(ByRef...

При изменении нескольких ячеек выполнить код
При изменении одной ячейки код выполняется: Private Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru