Добрый вечер, Форумчане. Опять к Вам за помощью. Есть форма. В ней левые СВ назначают опорные списки для правых СВ. Нужно сделать, чтобы при изменении значения в правом СВ (например, "Ад" ;) перед тем же самым значением в опорном списке добавлялось "Тест." (т.е. здесь это будет "Тест.Ад" ;) . В опорном диапазоне дубликатов нет.
Private Sub ComboBox11_Change()
With Range(ComboBox11.RowSource).Cells(ComboBox11.ListIndex + 1): .Value = IIf(.Value Like "Тест*", "", "Тест.") & .Value: End With
End Sub
Эх, поторопился!!!!!!!!!!!!!!!!!!! Ведь и в самом Комбобоксе тоже меняется значение. А не должно. Как полечить? То есть, чтобы значение в самом КомбоБоксе НЕ менялось при этом. Или как в конце макроса из самого Комбобокса удалить "Тест.", чтобы осталось только исходный текст?
У меня диапазонов около 200... Куча работы переписывать на конкретные ячейки. Может можно в конце макроса на изменение Комбобокса из его значения удалить "Тест.", чтобы остался только исходный текст? Но в питающем списке, чтобы осталось изменённое значение.
Да не надо под конкретные ячейки ничего переписывать - все диапазоны у ТС уже имеют имена, поэтому достаточно вместо задания диапазона-источника (ComboBox11.RowSource = "дА") сразу закидывать в элемент управления массив значений из диапазона (ComboBox11.List =[дА].Value). Но при следующем вызове формы или изменении левых списков значения со словом "Тест" все равно попадут в комбобоксы.
Private Sub ComboBox11_Change()
With Range(ComboBox11.RowSource).Cells(ComboBox11.ListIndex + 1): .Value = IIf(.Value Like "Тест*", "", "Тест.") & .Value: End With
End Sub
Конечно ругается - теперь привязанного диапазона у комбобокса нет. Поэтому для корректной работы как вариант имя диапазона можно записывать в специальное свойство Tag (ComboBox11.List =[дА].Value: ComboBox11.Tag = "дА" ;) , а затем считывать в нужной процедуре:
Код
Private Sub ComboBox11_Change()
With Range(ComboBox11.Tag).Cells(ComboBox11.ListIndex + 1): .Value = IIf(.Value Like "Тест*", "", "Тест.") & .Value: End With
End Sub
Уверен, что на реальном файле можно было бы еще упростить, но для текущего примера пока так.