Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка значений в ячейки по критерию из списка - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка значений в ячейки по критерию из списка (Макросы/Sub)
Вставка значений в ячейки по критерию из списка
maxexcel Дата: Четверг, 17.09.2015, 20:06 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Всем привет! Необходим макрос. Задача: На "листе2" имеется таблица. Каждая позиция имеет наименование и по 3 параметра. Необходимо чтобы выделив ячейку G на "листе1", появился выпадающий список с наименованиями позиций, и при выборе, в ячейки G,H,I прописались 3 параметра, а не наименование.
К сообщению приложен файл: 4231451.xlsx (10.0 Kb)


Сообщение отредактировал maxexcel - Четверг, 17.09.2015, 20:08
 
Ответить
СообщениеВсем привет! Необходим макрос. Задача: На "листе2" имеется таблица. Каждая позиция имеет наименование и по 3 параметра. Необходимо чтобы выделив ячейку G на "листе1", появился выпадающий список с наименованиями позиций, и при выборе, в ячейки G,H,I прописались 3 параметра, а не наименование.

Автор - maxexcel
Дата добавления - 17.09.2015 в 20:06
Roman777 Дата: Четверг, 17.09.2015, 22:07 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
maxexcel, А так Вас не устроит? Сделан выпадающий список на основе данных с листа 2.
К сообщению приложен файл: 4231451_.xlsx (10.9 Kb)


Много чего не знаю!!!!
 
Ответить
Сообщениеmaxexcel, А так Вас не устроит? Сделан выпадающий список на основе данных с листа 2.

Автор - Roman777
Дата добавления - 17.09.2015 в 22:07
KSV Дата: Пятница, 18.09.2015, 00:30 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
и при выборе, в ячейки G,H,I прописались 3 параметра, а не наименование

как вариант (см. вложенный файл)
только непонятно, для чего так извращаться?... :)
К сообщению приложен файл: 4231451_.xlsm (19.7 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Пятница, 18.09.2015, 13:02
 
Ответить
Сообщение
и при выборе, в ячейки G,H,I прописались 3 параметра, а не наименование

как вариант (см. вложенный файл)
только непонятно, для чего так извращаться?... :)

Автор - KSV
Дата добавления - 18.09.2015 в 00:30
Roman777 Дата: Пятница, 18.09.2015, 09:40 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, прикольно вышло.
только у меня ошибку делал, пока это:

не поменял на:

[moder]Роман, тексты кодов необязательно скрывать под спойлеры, тем более небольшие)[/moder]


Много чего не знаю!!!!

Сообщение отредактировал Pelena - Пятница, 18.09.2015, 09:50
 
Ответить
СообщениеKSV, прикольно вышло.
только у меня ошибку делал, пока это:

не поменял на:

[moder]Роман, тексты кодов необязательно скрывать под спойлеры, тем более небольшие)[/moder]

Автор - Roman777
Дата добавления - 18.09.2015 в 09:40
KSV Дата: Пятница, 18.09.2015, 12:55 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Roman777, менять местами строки не надо (первичное присвоение ActCell происходит в событии Workbook_Open()).
Просто, после скачивания файла нужно его разблокировать (правый клик на файле -> Свойства -> на вкладке Общие нажать Разблокировать), а потом уже запускать.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеRoman777, менять местами строки не надо (первичное присвоение ActCell происходит в событии Workbook_Open()).
Просто, после скачивания файла нужно его разблокировать (правый клик на файле -> Свойства -> на вкладке Общие нажать Разблокировать), а потом уже запускать.

Автор - KSV
Дата добавления - 18.09.2015 в 12:55
Roman777 Дата: Пятница, 18.09.2015, 13:02 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Про спойлеры учту.
KSV, Вы правы, я увидел это событие, только не понял, почему оно не срабатывает.
Разблокировать), а потом уже запускать
теперь буду знать).
А почему нельзя убрать это событие (Workbook_Open()) и поменять просто эти две строчки местами?


Много чего не знаю!!!!
 
Ответить
СообщениеПро спойлеры учту.
KSV, Вы правы, я увидел это событие, только не понял, почему оно не срабатывает.
Разблокировать), а потом уже запускать
теперь буду знать).
А почему нельзя убрать это событие (Workbook_Open()) и поменять просто эти две строчки местами?

Автор - Roman777
Дата добавления - 18.09.2015 в 13:02
KSV Дата: Пятница, 18.09.2015, 13:28 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
почему нельзя убрать

потому, что в событии Worksheet_SelectionChange мы сначала удаляем проверку со старой ячейки, а только потом запоминаем новую активную ячейку.


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
почему нельзя убрать

потому, что в событии Worksheet_SelectionChange мы сначала удаляем проверку со старой ячейки, а только потом запоминаем новую активную ячейку.

Автор - KSV
Дата добавления - 18.09.2015 в 13:28
maxexcel Дата: Пятница, 18.09.2015, 13:29 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KVS, я, добавив еще 4 параметр, увеличив количество позиций и переместил таблицу со второго листа на 9-й, сделал активным 2-й лист. В макросе поменял соответствующие параметры. Выдает ошибку, файл с ошибкой во вложении. Что не так не пойму?
[vba]
Код
Option Explicit

Public ActCell As Range

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> [b]10[/b] Then Exit Sub
Set Target = [b]Лист9[/b].Range(Mid$(ActCell.Validation.Formula1, 8)).Find(ActCell)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
ActCell.Resize(, [b]4[/b]).Value = Target(, 2).Resize(, [b]4[/b]).Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActCell.Validation.Delete
If ActiveCell.Column <> [b]10[/b] Then Exit Sub
Set ActCell = ActiveCell
ActCell.Validation.Add xlValidateList, xlValidAlertStop, xlBetween, "=[b]Лист9[/b]!A2:[b]A13[/b]"
End Sub
[/vba]
[moder]Код нужно оформлять тегами![/moder]
К сообщению приложен файл: 5648098.xlsm (23.3 Kb)


Сообщение отредактировал Manyasha - Пятница, 18.09.2015, 14:21
 
Ответить
СообщениеKVS, я, добавив еще 4 параметр, увеличив количество позиций и переместил таблицу со второго листа на 9-й, сделал активным 2-й лист. В макросе поменял соответствующие параметры. Выдает ошибку, файл с ошибкой во вложении. Что не так не пойму?
[vba]
Код
Option Explicit

Public ActCell As Range

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> [b]10[/b] Then Exit Sub
Set Target = [b]Лист9[/b].Range(Mid$(ActCell.Validation.Formula1, 8)).Find(ActCell)
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
ActCell.Resize(, [b]4[/b]).Value = Target(, 2).Resize(, [b]4[/b]).Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActCell.Validation.Delete
If ActiveCell.Column <> [b]10[/b] Then Exit Sub
Set ActCell = ActiveCell
ActCell.Validation.Add xlValidateList, xlValidAlertStop, xlBetween, "=[b]Лист9[/b]!A2:[b]A13[/b]"
End Sub
[/vba]
[moder]Код нужно оформлять тегами![/moder]

Автор - maxexcel
Дата добавления - 18.09.2015 в 13:29
KSV Дата: Пятница, 18.09.2015, 13:59 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
вы не перенесли событие Workbook_Open

[p.s.]сейчас у вас настроено получение списка в столбце J на листе Лист2[/p.s.]
К сообщению приложен файл: 7221116.xlsm (24.0 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениевы не перенесли событие Workbook_Open

[p.s.]сейчас у вас настроено получение списка в столбце J на листе Лист2[/p.s.]

Автор - KSV
Дата добавления - 18.09.2015 в 13:59
maxexcel Дата: Пятница, 18.09.2015, 14:58 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, еще вопрос. Я переименовал в книге Лист9 на "База", Лист2 на "Инвентар"(это я адаптирую макрос под свой файл). И соответственно переименовал в коде. И снова ошибка.
К сообщению приложен файл: 3052876.xlsm (24.2 Kb)
 
Ответить
СообщениеKSV, еще вопрос. Я переименовал в книге Лист9 на "База", Лист2 на "Инвентар"(это я адаптирую макрос под свой файл). И соответственно переименовал в коде. И снова ошибка.

Автор - maxexcel
Дата добавления - 18.09.2015 в 14:58
KSV Дата: Пятница, 18.09.2015, 20:41 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
И соответственно переименовал в коде

в коде нужно было бы переименовывать, если бы вы получали объект листа по его имени (Name) – Worksheets("База"), а мы получаем объект листа по имени его модуля (CodeName), а оно так и осталось Лист2 (и Лист9, соответственно).


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
И соответственно переименовал в коде

в коде нужно было бы переименовывать, если бы вы получали объект листа по его имени (Name) – Worksheets("База"), а мы получаем объект листа по имени его модуля (CodeName), а оно так и осталось Лист2 (и Лист9, соответственно).

Автор - KSV
Дата добавления - 18.09.2015 в 20:41
maxexcel Дата: Пятница, 18.09.2015, 22:28 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, да, согласен, но вот какая штука, вернул код в исходный, а имена листов оставил "База" и "Инвентар". Я совсем запутался почему сейчас не работает макрос(см. файл)?
К сообщению приложен файл: 0597893.xlsm (24.3 Kb)
 
Ответить
СообщениеKSV, да, согласен, но вот какая штука, вернул код в исходный, а имена листов оставил "База" и "Инвентар". Я совсем запутался почему сейчас не работает макрос(см. файл)?

Автор - maxexcel
Дата добавления - 18.09.2015 в 22:28
KSV Дата: Пятница, 18.09.2015, 23:19 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
все же просто! :)
где Лист9.Range – это обращение к листу по CodeName, а где "=База!A2:A13" – это обращение к листу по имени (Name), как в формуле.

[p.s.]после скачивания файла нужно его разблокировать (правый клик на файле -> Свойства -> на вкладке Общие нажать Разблокировать), а потом уже запускать.[/p.s.]
К сообщению приложен файл: 0105211.xlsm (23.5 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Суббота, 19.09.2015, 01:14
 
Ответить
Сообщениевсе же просто! :)
где Лист9.Range – это обращение к листу по CodeName, а где "=База!A2:A13" – это обращение к листу по имени (Name), как в формуле.

[p.s.]после скачивания файла нужно его разблокировать (правый клик на файле -> Свойства -> на вкладке Общие нажать Разблокировать), а потом уже запускать.[/p.s.]

Автор - KSV
Дата добавления - 18.09.2015 в 23:19
maxexcel Дата: Понедельник, 21.09.2015, 10:32 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, Спасибо огромнейшее, что помогаете мне, но когда копирую макрос в свой файл, опять ошибка. Я увидел что в строке (см. ниже) Раньше была "8", а теперь "7". Подскажите, за что отвечает эта переменная? Может по этому у меня не работает макрос когда копирую в свой файл.
[vba]
Код
Set Target = Лист9.Range(Mid$(ActCell.Validation.Formula1, 7)).Find(ActCell)
[/vba]


Сообщение отредактировал maxexcel - Понедельник, 21.09.2015, 10:45
 
Ответить
СообщениеKSV, Спасибо огромнейшее, что помогаете мне, но когда копирую макрос в свой файл, опять ошибка. Я увидел что в строке (см. ниже) Раньше была "8", а теперь "7". Подскажите, за что отвечает эта переменная? Может по этому у меня не работает макрос когда копирую в свой файл.
[vba]
Код
Set Target = Лист9.Range(Mid$(ActCell.Validation.Formula1, 7)).Find(ActCell)
[/vba]

Автор - maxexcel
Дата добавления - 21.09.2015 в 10:32
KSV Дата: Вторник, 22.09.2015, 02:06 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
за что отвечает эта переменная?

вообще-то, это константа, а не переменная... :)
а на 7 поменял потому, что у вас имя листа стало на 1 символ короче (первоначально было Лист1, а теперь База)
эта цифра указывает на начальную позицию адреса диапазона в вашем правиле: "=База!A2:A13" (в нем А2:А13 начинается с 7-й позиции)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 22.09.2015, 02:07
 
Ответить
Сообщение
за что отвечает эта переменная?

вообще-то, это константа, а не переменная... :)
а на 7 поменял потому, что у вас имя листа стало на 1 символ короче (первоначально было Лист1, а теперь База)
эта цифра указывает на начальную позицию адреса диапазона в вашем правиле: "=База!A2:A13" (в нем А2:А13 начинается с 7-й позиции)

Автор - KSV
Дата добавления - 22.09.2015 в 02:06
maxexcel Дата: Среда, 30.09.2015, 12:35 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KSV, Спасибо большущее, очень помогли!
 
Ответить
СообщениеKSV, Спасибо большущее, очень помогли!

Автор - maxexcel
Дата добавления - 30.09.2015 в 12:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка значений в ячейки по критерию из списка (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!