Народ, сорри за тупизму, но никак не могу найти... Как сделать, чтобы при вводе в ячейку цифры, значения менялась на приготовленный заранее текст? На пример: ввожу цифру 1 - после ENTER появляется текст "А" 2 - текст "Б" 3 - текст "В" и.т.д. Спасибо!
у меня анкета... очень много вариантов ответов. хочу полученную информацию ввести в ексел. например, возраст 20-30 лет - цифра 1 30-40 лет - цифра 2 40-50 лет - цифра 3 в следующим столбике пол человека: 1- муж, 2 - жен и.т.д
Сделал спецверсию - открываете этот файл, включаете чекбокс (сохранил с включённым) - теперь в любом другом файле пишите 1 или 2 или 3 или 11 или 22 или... Чтоб отключить - отключаете. Чекбокс или закрываете файл. Базу можете пополнять, там есть место для трёх вариантов. Как критерий (что вводить) всегда берётся первый жёлтый столбец. Настройки сдвига Вам не нужны, не меняйте. Но можете конечно поиграться.
Там нет ничего скрытого - только Эксель и его VBA. Как сейчас вижу, для этой (да и той оригинальной задачи кажется тоже, не помню уже детали) нужно чуть изменить код - радиокнопка в столбце критерия ни к чему, лишний функционал. Т.е. можно особо не напрягаясь сделать 4 варианта замены. Если добавить радиокнопок и серьёзнее изменить код - можно сделать столько вариантов, сколько есть столбцов на листе (-1)
Михаил Лебедев, там срабатывает Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range) И кстати если нужно в разные столбцы вставлять разные столбцы из базы - можно подшаманить с строкой Target.Offset(, kuda).Value = tabNum(oDict.Item(Target.Value), cto) Вот это cto можно привязать к Target.Row, а чекбоксы тогда можно вообще убрать (и всю их обработку). Ну это локально по этой задаче.
Hugo - всё, разобрался, спасибо (я про Private Sub App_SheetChange(ByVal Sh ..... ) Я правильно понял, всё дело в Private WithEvents App As Application? Давно когда-то читал про это, но ни разу не использовал. Т.е., когда я ввожу эту строку, появляются обработчики событий для объекта, который по иерархии выше книги, т.е. для самого екселя (App (=Application))?
Век живи - век учись (и не хотелось бы - дураком то... ☺ хотя.... там уже без разницы... ☺ )
PS А с подшаманиванием кода локально по задаче - да, я догадался, спасибо. PPS 1. Кстати, если в Jamaly.xls поменять в столбцах тексты на другие, то в новой книге продолжают подставляться старые значения. Новые - только после сохранения Jamaly.xls. 2. И кстати, работает только на 1 2 3, а на 4 5 и т.д. - уже не срабатывает. Выпадает из if then вот в этой строчке If oDict.exists(Target.Value) Then ... события Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range) Дальше - не полез, надо домой идти, скоро праздник , а с Dictionary я так и не разобрался до сих пор....
Да, если менять базу - то нужно обновлять массив в памяти и словарь, а это происходит только при открытии файла. Но можно конечно подшаманить и сделать это принудительно любым другим способом. Там в исходной теме есть немного про это - но т.к. было в 2012 году, то детали уже не помню.