Привет ребят хочу чтобы вы меня поставили на правильный путь реализации моей задумки. Excel 2016, делаю выпадающий список Есть Лист со списком, назовем его list_2, в нем таблица с двумя столбцами id и name поле name Источник данных для списка назову его select На листе list_1 вставляю список c источником select
Что я хочу, когда я выбираю значение из списка name, в правом столбце присваивалась его значение по id (которое в list_2).
пока что сделал тупо добавление name в правый столбец
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.EnableEvents = False If Target.Offset(0, 1) <> Target Then Target.Offset(0, 1) = Target End If Application.EnableEvents = True End Sub
[/vba]
Скажите как правильно и возможно ли это реализовать? спасибо
Привет ребят хочу чтобы вы меня поставили на правильный путь реализации моей задумки. Excel 2016, делаю выпадающий список Есть Лист со списком, назовем его list_2, в нем таблица с двумя столбцами id и name поле name Источник данных для списка назову его select На листе list_1 вставляю список c источником select
Что я хочу, когда я выбираю значение из списка name, в правом столбце присваивалась его значение по id (которое в list_2).
пока что сделал тупо добавление name в правый столбец
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.EnableEvents = False If Target.Offset(0, 1) <> Target Then Target.Offset(0, 1) = Target End If Application.EnableEvents = True End Sub
[/vba]
Скажите как правильно и возможно ли это реализовать? спасибоkolyan2288
Если точно из списка, получится значение. Если введенное значение не из списка, будет значение ошибки [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If (Target.Column = 2) And (Target.Row > 1) Then Application.EnableEvents = False Target.Offset(0, 1).FormulaR1C1 = "=INDEX(filters!C1,MATCH(RC[-1],filters!C2,0))" Target.Offset(0, 1).Value = Target.Offset(0, 1).Value Application.EnableEvents = True End If End Sub
[/vba]
Если точно из списка, получится значение. Если введенное значение не из списка, будет значение ошибки [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If (Target.Column = 2) And (Target.Row > 1) Then Application.EnableEvents = False Target.Offset(0, 1).FormulaR1C1 = "=INDEX(filters!C1,MATCH(RC[-1],filters!C2,0))" Target.Offset(0, 1).Value = Target.Offset(0, 1).Value Application.EnableEvents = True End If End Sub
Perfect2You Спасибо огромное, все работает)) Остался один вопрос в этой ветке У меня будет несколько разных категорий выпадающего списка так же разный диапазон к ним, как быть в этой ситуации?
Что пришло в голову: 1. Проверять IF Target.Column именно на какой список идет событие по столбцу т е запоминать, и выполнять FormulaR1C1 для этого списка 2. Получить имя диапазона списка и выполнять условия IF. зная заранее имя диапазона списка.
По второму пункту у меня не получилось вернуть имя диапазона списка((
Perfect2You Спасибо огромное, все работает)) Остался один вопрос в этой ветке У меня будет несколько разных категорий выпадающего списка так же разный диапазон к ним, как быть в этой ситуации?
Что пришло в голову: 1. Проверять IF Target.Column именно на какой список идет событие по столбцу т е запоминать, и выполнять FormulaR1C1 для этого списка 2. Получить имя диапазона списка и выполнять условия IF. зная заранее имя диапазона списка.
По второму пункту у меня не получилось вернуть имя диапазона списка((kolyan2288