Уважаемые гуру, доброе утро! Прошу помочь разобраться с обнулением значений в ячейках не соответствующих выбранным условиям.
Необходимо обнулять значения (или выдавать запись "не выбрано") в ячейках "D" и "E" если первоначально выбранные значение и данные в ячейки "D" и "E" подтянулись, а потом выбрали другие значения из выпадающего списка в ячейках "C" - надо чтобы пользователь выбрал иные значения в ячейках "D" и "E" используемые для значения ячейки "С".
Уважаемые гуру, доброе утро! Прошу помочь разобраться с обнулением значений в ячейках не соответствующих выбранным условиям.
Необходимо обнулять значения (или выдавать запись "не выбрано") в ячейках "D" и "E" если первоначально выбранные значение и данные в ячейки "D" и "E" подтянулись, а потом выбрали другие значения из выпадающего списка в ячейках "C" - надо чтобы пользователь выбрал иные значения в ячейках "D" и "E" используемые для значения ячейки "С".Sidvit
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("C:C")) Is Nothing Then Dim lR lR = ActiveCell.Row Cells(lR, 4).Value = "Не выбрано" Cells(lR, 5).Value = "Не выбрано" End If End Sub
[/vba]
Здравствуйте! В модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("C:C")) Is Nothing Then Dim lR lR = ActiveCell.Row Cells(lR, 4).Value = "Не выбрано" Cells(lR, 5).Value = "Не выбрано" End If End Sub
Dim data_new, data_old Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Dim lr& lr = Cells(Rows.Count, 3).End(xlUp).Row data_new = Range("c3:c" & lr).Value If IsEmpty(data_old) Then data_old = data_new If Not Intersect(Target, Range("c3:c" & lr)) Is Nothing Then If data_old(Target.Row - 2, 1) <> data_new(Target.Row - 2, 1) Then Target.Offset(, 1).Resize(, 2).ClearContents data_old = Range("c3:c" & lr).Value End If End If End Sub
[/vba]
Sidvit, здравствуйте, еще вариант [vba]
Код
Dim data_new, data_old Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub Dim lr& lr = Cells(Rows.Count, 3).End(xlUp).Row data_new = Range("c3:c" & lr).Value If IsEmpty(data_old) Then data_old = data_new If Not Intersect(Target, Range("c3:c" & lr)) Is Nothing Then If data_old(Target.Row - 2, 1) <> data_new(Target.Row - 2, 1) Then Target.Offset(, 1).Resize(, 2).ClearContents data_old = Range("c3:c" & lr).Value End If End If End Sub
_Igor_61, подскажите пожалуйста как будет выглядеть код если мне необходимо, чтобы текст "не выбрано" не применялся к ячейкам D43, E43, D51, E51.
_Igor_61, подскажите пожалуйста как будет выглядеть код если мне необходимо, чтобы текст "не выбрано" не применялся к ячейкам D43, E43, D51, E51.Sidvit
А завтра вместо 43 и 51 строк будут 68 и 23 и 1112? В Вашем примере таблица заканчивается на 17 строке, но это не принципиально. Принципиально - условия, где меняем, а где не меняем. Что меняем? Номер строки или значение из списка? Если список - нужна таблица соответствий, а ее скорее всего только Вы сможете сделать, потому что как узнать по каким условиям менять или не менять значения? В код VBA номера строк добавить не сложно, Вы можете уточнить, почему именно в этих строках? Если именно в этих - то "Cells(1,2)" - первая цифра - строка, вторая - столбец. Не очень понятно из Вашего вопроса, что именно нужно, может это поможет: [vba]
Код
If Target.Cells = ("C3") Then Exit Sub End If
[/vba] "С3" - для примера, вставляйте свои ячейки
А завтра вместо 43 и 51 строк будут 68 и 23 и 1112? В Вашем примере таблица заканчивается на 17 строке, но это не принципиально. Принципиально - условия, где меняем, а где не меняем. Что меняем? Номер строки или значение из списка? Если список - нужна таблица соответствий, а ее скорее всего только Вы сможете сделать, потому что как узнать по каким условиям менять или не менять значения? В код VBA номера строк добавить не сложно, Вы можете уточнить, почему именно в этих строках? Если именно в этих - то "Cells(1,2)" - первая цифра - строка, вторая - столбец. Не очень понятно из Вашего вопроса, что именно нужно, может это поможет: [vba]
Код
If Target.Cells = ("C3") Then Exit Sub End If
[/vba] "С3" - для примера, вставляйте свои ячейки_Igor_61
Сообщение отредактировал _Igor_61 - Пятница, 29.12.2017, 21:18
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("C:C")) Is Nothing Then Dim lR lR = ActiveCell.Row If lR = 6 Or lR = 9 Or lR = 5 Then Exit Sub End If Cells(lR, 4).Value = "Не выбрано" Cells(lR, 5).Value = "Не выбрано" End If End Sub
[/vba] Ставьте lR= Ваша строка (вместо 6, 9, 5) и проверяйте. У меня работает.
Кажется, понял, что нужно [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("C:C")) Is Nothing Then Dim lR lR = ActiveCell.Row If lR = 6 Or lR = 9 Or lR = 5 Then Exit Sub End If Cells(lR, 4).Value = "Не выбрано" Cells(lR, 5).Value = "Не выбрано" End If End Sub
[/vba] Ставьте lR= Ваша строка (вместо 6, 9, 5) и проверяйте. У меня работает._Igor_61
Большое спасибо за помощь. Ваше решение работает так как надо! Подскажите пожалуйста как сделать чтобы текст "Не выбрано" менялся на красный цвет?Sidvit