Главная страница
Поиск по модели:
  
Карта сайта
Статусы про мужчин гулящих
Придавать значение синоним
Часы касио edifice инструкция
Православные конкурсы для детей
Презентация на тему свет
Статья 21 семейного кодекса рф
Автобус петрозаводск москва расписание
Расписание электричек тобольск тюмень
 

Excel vba выпадающий список на форме

Докономист — блог, посвященный бизнесу, финансам и аналитике. Excel vba выпадающий список на форме блог идеален для частных предпринимателей, экономистов, финансистов, менеджеров и всех, кто работает в электронных таблицах Excel и Google Docs. В Одессе сильная жара, и меня ждет море. Я разработал такой вот выпадающий список с поиском - как в Гугле - для Экселя. Если ты не знаешь, что такое выпадающие списки, не беда. Выбор значений из списка. Ты получишь следующий результат. В ячейке с проверкой данных появится стрелка, при нажатии на которую выпадет список возможных значений. Чего склонен ожидать пользователь от такого списка? При вводе любого символа с клавиатуры список сокращается до тех значений, которые отвечают введенному критерию-символу. Ну хотя бы при вводе первого символа, чтобы список прокручивался до слов, начинающихся с той буквы, которую ты ввел. Нет, так сделать тоже нельзя. Предлагаю решение, которое поможет тебе справляться с большими списками. Решение использует VBA с использованием пользовательской формы. Далее я пошагово расскажу, как у себя настроить то же. Но сперва предлагаюна базе которого ты можешь настроить свой шаблон. Работаем в редакторе VBA. Если ты раньше там не бывал, не бойся. В этом нет ничего страшного! Интерфейс его весьма приятный, он не менялся, наверное, уже лет 20. Show ' show the form End Sub Sub ButtonLaunch ' Change Range. AddShape msoShapeRectangle, 0, 0, 1, 1 Top + CorrY End With ActiveWindow. ListBox, List As Range, CBval As String Dim Cel As Range CB. AddItem Cel Next Cel End If End Sub Sub RemoveCaption objForm As Object Dim lStyle As Long Dim hMenu As Long Dim mhWndForm As Long If Val Application. Это может быть адрес диапазона, например "Лист1! A1:A200", это может быть имя диапазона, как в моем случае. Так же в строке If Intersect Target, Range "B4:B500" тебе нужно поставить свой диапазон, в котором требуется создать выпадающие списки. Для этого замени B4:B500 на адрес своего диапазона. Этот адрес может не содержать имени листа, т. Дальше нужно вставить форму с двумя элементами управления: TestBox и ListBox. И на нее простыми кликами мыши переносишь TestBox и ListBox. Ты их можешь разместить как угодно. При запуске формы мы их разместим правильно. Теперь пора вставлять код формы. Это перенесет тебя в окно с кодом самой формы. ReturnInteger, ByVal Shift As Integer Select Case KeyCode Case 13 EndForm Case 38 If ListBox1. Value Call PopulateList UserForm1. ReturnInteger, ByVal Shift As Integer Select Case KeyCode Case 18 ListBox1. Value End With If LinkedCell. Value End Sub Дальше ты почти готов к использованию списков с поиском. Тебе нужно создать сам список, из которого будут выпадать значения. И еще для удобства пользования ты можешь привязать макрос, который запускает код к кнопке или картинке. И еще ты можешь заставить код срабатывать автоматически. В строке If Intersect Target, Range "B4:B500" тебе нужно поставить свой диапазон, в котором требуется создать выпадающие списки. Для этого замени B4:B500 на адрес своего диапазона. Что я только не перепробовал, пока не пришел к такому решению. И оно, разумеется, не идеально. Привет разработчикам В Экселе, оказывается, не все так просто, как на самом деле. При разработке данного проекта я пробовал использовать следующие средства: Элементы ActiveX. Результат: работают они красивее, чем формы, к тому же они самостоятельны не привязаны к excel vba выпадающий список на форме и являются excel vba выпадающий список на форме рабочего пространства т. Поэтому связанные списки у меня появлялись прямо в ячейках. Но при работе с ActiveX, оказалось, что они сплошь глючные, иногда неадекватно показывают событие выпадения самого списка. И когда, преодолев все сложности, я дописал код, оказалось, что он работает нестабильно. На более слабой машине, чем моя, Эксель пока последней 2013 версии вылетал каждый раз при попытке создания списка. Они, как я узнал на excel vba выпадающий список на форме из форумов, более приятны в обращении, но оказалось, что выпадающий список форм не обладает всем функционалом, который мне был необходим. Так что это пока отпадает. Выпадающий список в форме. С формой у меня есть отдельная боль - ее excel vba выпадающий список на форме нелегко разместить в нужном месте экрана, на что ушло процентов 80 всего кода и столько же усилий. Но главное, что выпадающий список в стандартной форме Экселя тоже работал глючно. А именно, при попытке заставить его выпадать, он часто выдавал непредсказуемый результат на экран. Сочетание элементов управления в форме. Наконец, я пришел к двум связанным элементам формы, которые симулируют один выпадающий список, а именно это простое текстовое поле TestBox и простой список ListBox. Именно этот вариант привел меня к решению. Решение это мне не нравится до сих пор: уж слишком оно громоздкое и неизящное. Слишком много усилий ради такой простой функции. Что ж, будем искать еще варианты. Но, тем не менее, приведенное выше решение работает стабильно и не приводит к перезагрузке программы надеюсь, что это так. Поэтому предлагаю тебе адаптировать его. И тут, при написании этой статьи, ко мне пришла идея: а что если использовать смешанную технику для нахождения более изящного решения. В примере выше, который я как раз закончил делать, ты видишь динамический список, который появляется непосредственно на месте ячейки, которую мы форматируем. Замечу несколько моментов: Во-первых, и тестируй, адаптируй, развивай. С этим проблем не excel vba выпадающий список на форме возникнуть. Дальше в модуле есть код, который обрабатывает большинство вещей. Тут удобнее использовать именованный диапазон, как в моем примере, но можно и прописать полный адрес, например Лист1! Данным списком удобно пользоваться. Он отвечает на некоторые события: после редактирования текста меняется список, это само собой. Это, по-моему, совпадает с ожидаемым поведением элементов управления. Тут пока есть небольшая недоработка, которую ты легко заметишь, протестировав пример. А именно если в текстовое поле ничего не введено, то оно не реагирует на нажатие стрелок. Но с этим можно жить, а к тому же, думаю, пытливый ум найдет решение. Данный список не проверяет жестко введенный текст в ячейку, но с этим excel vba выпадающий список на форме легко справиться, например, дополнительно сделав проверку данных по диапазону. Это решение, по-моему, максимально отвечает поставленной задаче. Тут есть еще простор для улучшений, но начало задано. Смысл работы основывается на нескольких идеях: Идея первая. Можно подделать элементы управления, если их создавать прямо сверху ячейки, которую выделил пользователь. Использовать элементы ActiveX и элементы формы Ввиду множества проделанных неудачных опытов, я пришел к выводу, что напрямую добиться результата нельзя. Но можно отдельно использовать элемент со списком ListBox, и элемент поле TextBox, и заставить из совместно работать как ComboBox - выпадающий список. Повторюсь, что напрямую это сделать я не смог - уж очень много глюков обнаружилось. И вот я в решении соединил 2 элемента управления, причем один из них - ActiveX полеа второй - элемент формы список. Это дало более стабильный результат, но при этом изящный и более легковесный, чем решение с пользовательскими формами. К тому же мне повезло найти пример с обработкой нажатия пользователем кнопок KeyCode при изменении Поля TextBox. Это дало возможность сделать список более дружелюбным к действиям пользователя. Что еще можно сделать Еще можно сделать так, чтобы пользователь смог вручную отключать опцию выпадения списка. Дело в том, что это может быть excel vba выпадающий список на форме навязчиво и неудобно при форматировании таблицы в целом. Тут оставляю пробел и специально не дорабатываю код: это довольно просто сделать и способов множество, так что оставляю эту работу за тобой. И еще, разумеется, можно повысить дружелюбность excel vba выпадающий список на форме, и добавить жесткую проверку данных, которая не даст ошибиться при вводе.



 
004067
В освоении новой техники Вы поступаете так:
изучаете инструкцию
просите кого-нибудь помочь
полагаетесь на интуицию
© 2005 — 2016 «rieltorr.ru» Документы на все случаи!