Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание выпадающих вписков в Excel

21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Макрос для Excel.Суть его такова: При нажатии по ячейки с данными создаётся выподающий список(без возможности редактирования), данные для списка беруться с другого листа(значение то что установлено в ячёйке). Как это можно сделать?
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Patrick
Макрос для Excel.Суть его такова: При нажатии по ячейки с данными создаётся выподающий список(без возможности редактирования), данные для списка беруться с другого листа(значение то что установлено в ячёйке). Как это можно сделать?



Если бы данные можно было бы разместить не на другом листе, а где-нибудь в уголочке этого же (или же список был бы постоянный и не слишком большой), то можно было бы обойтись вообще без макроса, а спомощью встроенной в Эксель фичи под названием "Проверка данных."
Это находится в меню/Данные/Проверка...
Если сам там не разберёшься или если такой вариант катастрофически не подходит, пиши.

459
08 декабря 2006 года
gacol
273 / / 12.02.2003
Можно список брать и на другом листе из именованного диапазона, но размер списка все равно будет фиксированный.
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: gacol
Можно список брать и на другом листе из именованного диапазона, но размер списка все равно будет фиксированный.



В 97-м Экселе так нельзя. Видимо, добавили в последних версиях.

21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Вот по ходу возник ищё вопрос: Как сделать так чтоб по клику на ячёйку все данные строки переносились бы в определённые выпадающте списки!

+ Заперт на ввод в ячеёку
Уж простити меня неуча, первый раз на VB программирую
275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
Если необходимо использовать изменяемый список, то существует несколько стандартных функций рабочего листа, которые возвращают ссылку. Стало быть, вместо именованного диапазона можно использовать именованную формулу, в которой будет наличествовать вышеупомянутая функция.
275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
[QUOTE=Cutty Sark]В 97-м Экселе так нельзя. Видимо, добавили в последних версиях.[/QUOTE]

Эта возможность есть и в MS Excel 97.
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: pashulka
Если необходимо использовать изменяемый список, то существует несколько стандартных функций рабочего листа, которые возвращают ссылку. Стало быть, вместо именованного диапазона можно использовать именованную формулу, в которой будет наличествовать вышеупомянутая функция.



Это надо пробовать - поймёт ли в таком виде "Проверка данных". В 97-м точно не поймёт.

P.S. Тебя Паша зовут? Чтоб обращаться, в случае чего, по имени. Меня Сергей.

267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: pashulka
Эта возможность есть и в MS Excel 97.



А ты не путаешь "Проверку данных" и "Поле со списком"? Я специально пробовал с именованным диапазоном - ей-богу, не понимает.

267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Patrick
Вот по ходу возник ищё вопрос: Как сделать так чтоб по клику на ячёйку все данные строки переносились бы в определённые выпадающте списки!

+ Заперт на ввод в ячеёку
Уж простити меня неуча, первый раз на VB программирую



А давай-ка ты подробно распишешь, в чём состоит твоя задача. Так будет гораздо предметнее.

21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Цитата: Cutty Sark
А давай-ка ты подробно распишешь, в чём состоит твоя задача. Так будет гораздо предметнее.



Вообщем припахали меня на работе писать маркос для Excel. Vb вообще увидел первый раз в жизни! Вот поэтому и столько вопросов!
Задача такая есть несколько списков и полей ввода. Задача добавлять данные на текущий лист, как в БД( с этим я справился), а вот как быть с редактированим я что то очень смутно понимаю(как я буаю при выделении ячейки с данными они будут переноситься на селекты и поля ввода). + Надо сделать блокировку на ввод значений в ячейку что б взякую херь не писали. Задачка впринципе не сложная, но вот если знать VB. А я Web - занмаюсь! Так что для меня что то сложновато в понимании....

267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Patrick
Вообщем припахали меня на работе писать маркос для Excel. Vb вообще увидел первый раз в жизни! Вот поэтому и столько вопросов!
Задача такая есть несколько списков и полей ввода. Задача добавлять данные на текущий лист, как в БД( с этим я справился), а вот как быть с редактированим я что то очень смутно понимаю(как я буаю при выделении ячейки с данными они будут переноситься на селекты и поля ввода). + Надо сделать блокировку на ввод значений в ячейку что б взякую херь не писали. Задачка впринципе не сложная, но вот если знать VB. А я Web - заниаюсь!



Не всё я понял, но что-то мне подсказывает, что в твоём случае лучше всего склепать простенькую формочку с нужным количеством полей и двумя кнопками - Ок и Отмена. Дело это не хитрое, так что ты не бойся, поможем.

Вопросы:
1. Списки фиксированной длины, установленной "раз и навсегда"?
2. Надо иметь возможность и ввода новых записей и редактирования старых?

275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
Сергей, У меня тоже MS Excel 97 и оба вышеопубликованных совета будут работать, причём именно с об'ектом Validation. Кстати, если интересно, то в аттаче есть небольшой пример.

С уважением, Павел
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: pashulka
Сергей, У меня тоже MS Excel 97 и оба вышеопубликованных совета будут работать, причём именно с об'ектом Validation. Кстати, если интересно, то в аттаче есть небольшой пример.

С уважением, Павел



Я понял, где я делал не так. Забыл про "=" перед именем диапазона.

А вообще - отлично! Давненько не узнавал я новенького про Эксель, а вот ведь случилось! Я, причём, пользуюсь периодически "проверкой", но раньше прятал списки "в дальнем углу" листа.

Так что, уважаемый Patrick, это для тебя тоже вариант. Можно так, а можно формой. Свои плюсы есть у обоих вариантов.

275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
Да, в опубликованном примере наличествует также наличествует и вариант с изменяемым диапазоном. Так что, если кому-нибудь это интересно, то скачивайте.
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: pashulka
Да, в опубликованном примере наличествует также наличествует и вариант с изменяемым диапазоном. Так что, если кому-нибудь это интересно, то скачивайте.



Я именно поэтому и обратил внимание Patricka.

А в чём там тонкость с Volatile-функциями? Работать не будет? Потому что я бы навскидку воспользовался именно СМЕЩ или ДВССЫЛ.

275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
Пример будет работать и с этими функциями, иначе я бы не говорил о возможной замене, но эти (и не только) стандартные функции рабочего листа - пересчитываются при изменении значений в любой ячейке любого рабочего листа любой открытой рабочей книги. Поэтому я, по возможности, стараюсь использовать именно стандартную функцию рабочего листа =ИНДЕКС() конечно, не забывая о наличии столь нужных и полезных функций, как =СМЕЩ() и =ДВССЫЛ()
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: pashulka
Пример будет работать и с этими функциями, иначе я бы не говорил о возможной замене, но эти (и не только) стандартные функции рабочего листа - пересчитываются при изменении значений в любой ячейке любого рабочего листа любой открытой рабочей книги. Поэтому я, по возможности, стараюсь использовать именно стандартную функцию рабочего листа =ИНДЕКС() конечно, не забывая о наличии столь нужных и полезных функций, как =СМЕЩ() и =ДВССЫЛ()



А ну если так, то понятно. В принципе, это быстрые функции, не то что СУММЕСЛИ и т.п. с перебором больших массивов. Так что на скорость повлиять не должно.

21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Список устанавлиается раз и насвегда
2. Нет, недьзя
21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Цитата: pashulka
Сергей, У меня тоже MS Excel 97 и оба вышеопубликованных совета будут работать, причём именно с об'ектом Validation. Кстати, если интересно, то в аттаче есть небольшой пример.

С уважением, Павел


А как такое сделать?

267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Patrick
А как такое сделать?



Возьми пример от Pashulki. Если в нём что-то непонятно, спрашивай.

21K
08 декабря 2006 года
Patrick
9 / / 08.12.2006
Cutty Sark Непонятно всё вообще! как такое создаётся? Не одного макроса, ни одной формулы! Одни загадки!
267
08 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Понятно. Объясняю (с позволения pashulki)

Возьмём для примера Пашин файл и создадим там ещё одну такую штуку (учитывая, что список у тебя постоянный)

1. На листе Источник, для примера в столбце С записываем исходные данные. Пусть, для простоты теже Иванов, Петров и т.д., что и Паши.
Допустим, они заняли ячейки С2:С6

2. Выделяем этот диапазон, и присваиваем ему имя. ГМ (Главное меню Экселя)/Вставка/Имя/Присвоить. Там ты уже видишь в списке три имени, использованные pashulk-ой, тебе надо присвоить какое-нибудь ещё. Допустим, ПАТРИК.
Этот путь наименования диапазона не самый короткий, но я хотел, чтобы ты увидел где можно смотреть/менять/удалять имена диапазонов.

2+. Теперь весь твой файл знает, что есть диапазон под названием ПАТРИК. Если бы это были числа, а не фамилии, ты мог бы написать в произвольном месте =СУММ(ПАТРИК)

3. Теперь переходим на лист Список и создадим в ячейке A8 проверку данных. Выделяем А8 и идём в меню ГМ/Данные/Проверка...
В появившемся окне на вкладке Параметры устанвливаем Тип данных = Список, Источник = "=ПАТРИК". Нажимаем "ОК". Всё.

3++. Можешь потом в настроечном окне Проверки данных самостоятельно поиграть с вкладками Сообщение для ввода и Сообщение об ошибке. Сам увидишь, на что они влияют.
275
08 декабря 2006 года
pashulka
985 / / 19.09.2004
Кстати, если диапазон, который будет служить источником данных является константой, а имя рабочего листа, где располагается этот список, изменяться не будет, то можно обойтись без использования имени. Для этого, в текстовом поле Источник (Данные/Проверка Данных/Список) нужно ввести формулу : =ДВССЫЛ("Источник!A2:A10")
Примечание : "Источник" - это имя рабочего листа, которое используется только в качестве примера.
10K
10 декабря 2006 года
evgedka
22 / / 25.04.2005
Давай-ка, мой незнакомый друг, быстренько, кратенько, подробненько мыль ко мне [email]evgedka@mail.ru[/email].
В природе не существует раздела VBAE, в котором бы мы не разобрались.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог