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

Вход

Регистрация

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

 

= Мир MS Excel/сделать ячейку(строку) неактивной по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сделать ячейку(строку) неактивной по условию (Макросы/Sub)
сделать ячейку(строку) неактивной по условию
Beleric3380 Дата: Понедельник, 18.07.2022, 08:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Добрый день!
С VBA знаком очень поверхностно
Столкнулся со следующей ситуацией. Необходимо сделать строку неактивной( чтобы нельзя было ничего редактировать) в зависимости от условия в другом столбце. Прикрепляю файл. В столбце Флаг, если у нас стоит Yes, то соотвествующие ячейки в первом и втором столбце должны быть доступны для редактирования. Если там стоит 'No', то надо сделать ячейки в других столбцах неактивными, чтобы нельзя было там ничего писать, и по возможности ячейки меняли цвет.
Так же интересует вариант не с заблокированием ячеек, а со скрытием строки, если у нас во Флаге стоит "No"

Спасибо!
К сообщению приложен файл: 7182022.xlsx(12.4 Kb)
 
Ответить
СообщениеДобрый день!
С VBA знаком очень поверхностно
Столкнулся со следующей ситуацией. Необходимо сделать строку неактивной( чтобы нельзя было ничего редактировать) в зависимости от условия в другом столбце. Прикрепляю файл. В столбце Флаг, если у нас стоит Yes, то соотвествующие ячейки в первом и втором столбце должны быть доступны для редактирования. Если там стоит 'No', то надо сделать ячейки в других столбцах неактивными, чтобы нельзя было там ничего писать, и по возможности ячейки меняли цвет.
Так же интересует вариант не с заблокированием ячеек, а со скрытием строки, если у нас во Флаге стоит "No"

Спасибо!

Автор - Beleric3380
Дата добавления - 18.07.2022 в 08:53
jun Дата: Понедельник, 18.07.2022, 15:54 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 84
Репутация: 18 ±
Замечаний: 0% ±

Beleric3380, приветствую!
Код в модуле первого листа (нужный раскомментировать/закомментить):
- код блокирует ячейки с паролем "123"
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long, lr As Long

    If Target.CountLarge <> 1 Then Exit Sub
    If Target.Column <> 5 Then Exit Sub
    r = Target.Row: lr = Cells(Rows.Count, 3).End(xlUp).Row
    ActiveSheet.Unprotect
    Select Case Target.Value
        Case "Yes"
            Range(Cells(r, 3), Cells(r, 4)).Locked = True
            Target.Locked = False
        Case "No"
            If Range(Cells(r, 3), Cells(r, 4)).Locked Then Range(Cells(r, 3), Cells(r, 4)).Locked = False
    End Select
    Range(Cells(r + 1, 3), Cells(lr + 1, 4)).Locked = False
    ActiveSheet.Protect Password:="123"
End Sub
[/vba]
-код скрывает ячейку с флагом No:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge <> 1 Then Exit Sub
    If Target.Column <> 5 Then Exit Sub
    Select Case Target.Value
        Case "No"
            Target.EntireRow.Hidden = True
    End Select
End Sub
[/vba]
К сообщению приложен файл: 7182022.xls(38.5 Kb)


Сообщение отредактировал jun - Понедельник, 18.07.2022, 15:55
 
Ответить
СообщениеBeleric3380, приветствую!
Код в модуле первого листа (нужный раскомментировать/закомментить):
- код блокирует ячейки с паролем "123"
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long, lr As Long

    If Target.CountLarge <> 1 Then Exit Sub
    If Target.Column <> 5 Then Exit Sub
    r = Target.Row: lr = Cells(Rows.Count, 3).End(xlUp).Row
    ActiveSheet.Unprotect
    Select Case Target.Value
        Case "Yes"
            Range(Cells(r, 3), Cells(r, 4)).Locked = True
            Target.Locked = False
        Case "No"
            If Range(Cells(r, 3), Cells(r, 4)).Locked Then Range(Cells(r, 3), Cells(r, 4)).Locked = False
    End Select
    Range(Cells(r + 1, 3), Cells(lr + 1, 4)).Locked = False
    ActiveSheet.Protect Password:="123"
End Sub
[/vba]
-код скрывает ячейку с флагом No:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge <> 1 Then Exit Sub
    If Target.Column <> 5 Then Exit Sub
    Select Case Target.Value
        Case "No"
            Target.EntireRow.Hidden = True
    End Select
End Sub
[/vba]

Автор - jun
Дата добавления - 18.07.2022 в 15:54
boa Дата: Вторник, 19.07.2022, 00:33 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 543
Репутация: 166 ±
Замечаний: 0% ±

2013, 365
Здравствуйте,
Еще вариант с Условным форматированием и Проверкой данных
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 5 Then
    With Range(Cells(Target.Row, 3), Cells(Target.Row, 4)).Validation
      .Delete
      If Target.Value = "No" Then
        .Add Type:=xlValidateCustom, Formula1:="="""""
        .ErrorTitle = "Запрещено редактировать!"
        .ErrorMessage = "Ввод новых значений запрещён" & vbCrLf & "Нажмите ""ОТМЕНА"""
        .ShowError = True
      End If
    End With
  End If
End Sub
[/vba]
Не требует паролирования листа, но ограничение можно "обойти", если не много подумать ))
З.Ы. значение не может быть отредактировано, но может быть удалено ((
К сообщению приложен файл: 7182022.xlsb(20.3 Kb)




Сообщение отредактировал boa - Вторник, 19.07.2022, 00:42
 
Ответить
СообщениеЗдравствуйте,
Еще вариант с Условным форматированием и Проверкой данных
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 5 Then
    With Range(Cells(Target.Row, 3), Cells(Target.Row, 4)).Validation
      .Delete
      If Target.Value = "No" Then
        .Add Type:=xlValidateCustom, Formula1:="="""""
        .ErrorTitle = "Запрещено редактировать!"
        .ErrorMessage = "Ввод новых значений запрещён" & vbCrLf & "Нажмите ""ОТМЕНА"""
        .ShowError = True
      End If
    End With
  End If
End Sub
[/vba]
Не требует паролирования листа, но ограничение можно "обойти", если не много подумать ))
З.Ы. значение не может быть отредактировано, но может быть удалено ((

Автор - boa
Дата добавления - 19.07.2022 в 00:33
Beleric3380 Дата: Вторник, 19.07.2022, 06:52 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

boa, Спасибо большое, прямо как надо, пароль на лист мне как раз необязателен. Не могу разобраться, как сделать так, чтобы при выборе "NO" шла смена цвета ячеек, у меня они всегда остаются белыми
 
Ответить
Сообщениеboa, Спасибо большое, прямо как надо, пароль на лист мне как раз необязателен. Не могу разобраться, как сделать так, чтобы при выборе "NO" шла смена цвета ячеек, у меня они всегда остаются белыми

Автор - Beleric3380
Дата добавления - 19.07.2022 в 06:52
boa Дата: Вторник, 19.07.2022, 10:19 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 543
Репутация: 166 ±
Замечаний: 0% ±

2013, 365
Beleric3380,
Условным форматированием.
зайдите в УФ моего файла, там все просто


 
Ответить
СообщениеBeleric3380,
Условным форматированием.
зайдите в УФ моего файла, там все просто

Автор - boa
Дата добавления - 19.07.2022 в 10:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сделать ячейку(строку) неактивной по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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