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

Вход

Регистрация

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

 

= Мир MS Excel/Добавление в код новой процедуры combobox2 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Добавление в код новой процедуры combobox2
Evgen83 Дата: Четверг, 26.07.2012, 15:27 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте! Знатоки VBA подскажите пожалуйста, как можно в данный макрос ввести (добавить) ещё три combobox-а (2,3,4) с такими же свойствами как у combobox1 (только новые combobox-ы будут брать данные из трёх новых списков на Листе2). Заранее спасибо!
Исходный макрос:

[vba]
Code
Private Sub ComboBox1_Change()
Application.EnableEvents = False
ActiveCell.Value = Me.ComboBox1.Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [e1:e1000]) Is Nothing Or Target.Cells.Count > 1 Then HideCombo: Exit Sub
Application.EnableEvents = False
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1.Width = Target.Width + 16
Me.ComboBox1.Height = Target.Height
FillCombo
Application.EnableEvents = True
End Sub

Sub FillCombo()
Const iRow = 65536: iClm = "A"
iRws = Sheets(2).Columns(iClm).Rows(iRow).End(xlUp).Row
ComboBox1.ListFillRange = "Лист2!A1:A" & iRws
Me.ComboBox1.Value = ActiveCell.Value
Me.ComboBox1.Font.Size = 6
End Sub

Sub HideCombo()
Me.ComboBox1.Top = 0
Me.ComboBox1.Left = 0
Me.ComboBox1.Width = 0
Me.ComboBox1.Height = 0
End Sub
[/vba]
К сообщению приложен файл: 123.xlsm (34.3 Kb)


Сообщение отредактировал Evgen83 - Четверг, 26.07.2012, 15:29
 
Ответить
СообщениеЗдравствуйте! Знатоки VBA подскажите пожалуйста, как можно в данный макрос ввести (добавить) ещё три combobox-а (2,3,4) с такими же свойствами как у combobox1 (только новые combobox-ы будут брать данные из трёх новых списков на Листе2). Заранее спасибо!
Исходный макрос:

[vba]
Code
Private Sub ComboBox1_Change()
Application.EnableEvents = False
ActiveCell.Value = Me.ComboBox1.Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [e1:e1000]) Is Nothing Or Target.Cells.Count > 1 Then HideCombo: Exit Sub
Application.EnableEvents = False
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1.Width = Target.Width + 16
Me.ComboBox1.Height = Target.Height
FillCombo
Application.EnableEvents = True
End Sub

Sub FillCombo()
Const iRow = 65536: iClm = "A"
iRws = Sheets(2).Columns(iClm).Rows(iRow).End(xlUp).Row
ComboBox1.ListFillRange = "Лист2!A1:A" & iRws
Me.ComboBox1.Value = ActiveCell.Value
Me.ComboBox1.Font.Size = 6
End Sub

Sub HideCombo()
Me.ComboBox1.Top = 0
Me.ComboBox1.Left = 0
Me.ComboBox1.Width = 0
Me.ComboBox1.Height = 0
End Sub
[/vba]

Автор - Evgen83
Дата добавления - 26.07.2012 в 15:27
Serge_007 Дата: Четверг, 26.07.2012, 15:37 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Evgen83, используйте теги оформления кода


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеEvgen83, используйте теги оформления кода

Автор - Serge_007
Дата добавления - 26.07.2012 в 15:37
RAN Дата: Четверг, 26.07.2012, 15:46 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вопрос 1 - а зачем еще комбо и что они будут делать?
Вопрос 2 - где они в примере?

Примечание - шаманство с xlsm притомило. Можно xls?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВопрос 1 - а зачем еще комбо и что они будут делать?
Вопрос 2 - где они в примере?

Примечание - шаманство с xlsm притомило. Можно xls?

Автор - RAN
Дата добавления - 26.07.2012 в 15:46
Evgen83 Дата: Четверг, 26.07.2012, 15:53 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, Вы имеете в виду описание операций (для пущего понимания?)
 
Ответить
СообщениеSerge_007, Вы имеете в виду описание операций (для пущего понимания?)

Автор - Evgen83
Дата добавления - 26.07.2012 в 15:53
Serge_007 Дата: Четверг, 26.07.2012, 15:54 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Я имею ввиду теги оформления кода #

К сообщению приложен файл: 9433069.jpg (48.7 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЯ имею ввиду теги оформления кода #


Автор - Serge_007
Дата добавления - 26.07.2012 в 15:54
Evgen83 Дата: Четверг, 26.07.2012, 16:00 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, я Вам в своей предыдущей теме от имени Гостя ответил)

Касаемо Ваших вопросов:

1. Мне, на Листе1 нужно ещё 3 выпадающих списка, также как и combobox1 они (3 новых) должны занимать целый столбец. (Пардон, если излагаюсь корявым языком, в VBA я кАнкретный новичок))). Они будут делать тоже, что и первый - брать данные из трёх списков (на Лист2), соответственно.

2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос? Может я чего не допонимаю...

Примечание: в xls он более 100 кб.


Сообщение отредактировал Evgen83 - Четверг, 26.07.2012, 16:06
 
Ответить
СообщениеRAN, я Вам в своей предыдущей теме от имени Гостя ответил)

Касаемо Ваших вопросов:

1. Мне, на Листе1 нужно ещё 3 выпадающих списка, также как и combobox1 они (3 новых) должны занимать целый столбец. (Пардон, если излагаюсь корявым языком, в VBA я кАнкретный новичок))). Они будут делать тоже, что и первый - брать данные из трёх списков (на Лист2), соответственно.

2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос? Может я чего не допонимаю...

Примечание: в xls он более 100 кб.

Автор - Evgen83
Дата добавления - 26.07.2012 в 16:00
Evgen83 Дата: Четверг, 26.07.2012, 16:01 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, понял про что речь)
 
Ответить
СообщениеSerge_007, понял про что речь)

Автор - Evgen83
Дата добавления - 26.07.2012 в 16:01
Serge_007 Дата: Четверг, 26.07.2012, 16:03 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Evgen83)
в xml он более 100 кб

xml не надо, надо xls. Если больше 100 кило - в архив


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Evgen83)
в xml он более 100 кб

xml не надо, надо xls. Если больше 100 кило - в архив

Автор - Serge_007
Дата добавления - 26.07.2012 в 16:03
RAN Дата: Четверг, 26.07.2012, 16:28 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мой файл - 40кв! объясните на нем.
У вас для 1000 ячеек работает 1 комбо. Думаете 5000 не переварит? Или 3 списка поперек горла встанут?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМой файл - 40кв! объясните на нем.
У вас для 1000 ячеек работает 1 комбо. Думаете 5000 не переварит? Или 3 списка поперек горла встанут?

Автор - RAN
Дата добавления - 26.07.2012 в 16:28
Evgen83 Дата: Четверг, 26.07.2012, 22:02 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, я "набросал" пример своей задачи в файле. Задача состоит в том, что бы на листе было несколько выпадающих списков, которые в свою очередь брали данные из разных списков (эти списки время от времени будут изменяться). Плюс к заданию: выпадающий список должен "выпадать" на количество занятых строк в списке, но это вроде работает). Я в примере набросал как это примерно должно выглядеть. Не могу добиться, что бы каждый столбец (E, G, I) брал бы данные из соответствующего столбца на Лист2 (A, C, E - соответственно). Пытаюсь повторить исходный код (в первом посте) три раза (для трёх списков) - возникает куча ошибок. Понимаю, что поступаю наверно тупо (копирую код). Наверняка есть более изящные пути. Может немного коряво излагаю суть. Задавайте, если что Уточняющие вопросы))) Спасибо!
К сообщению приложен файл: 8222327.xls (65.5 Kb)


Сообщение отредактировал Evgen83 - Четверг, 26.07.2012, 22:05
 
Ответить
СообщениеRAN, я "набросал" пример своей задачи в файле. Задача состоит в том, что бы на листе было несколько выпадающих списков, которые в свою очередь брали данные из разных списков (эти списки время от времени будут изменяться). Плюс к заданию: выпадающий список должен "выпадать" на количество занятых строк в списке, но это вроде работает). Я в примере набросал как это примерно должно выглядеть. Не могу добиться, что бы каждый столбец (E, G, I) брал бы данные из соответствующего столбца на Лист2 (A, C, E - соответственно). Пытаюсь повторить исходный код (в первом посте) три раза (для трёх списков) - возникает куча ошибок. Понимаю, что поступаю наверно тупо (копирую код). Наверняка есть более изящные пути. Может немного коряво излагаю суть. Задавайте, если что Уточняющие вопросы))) Спасибо!

Автор - Evgen83
Дата добавления - 26.07.2012 в 22:02
Gustav Дата: Четверг, 26.07.2012, 23:54 | Сообщение № 11
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Evgen83, а вот недавно была похожая тема http://www.excelworld.ru/forum/2-1895-1 . Там в качестве Гостя не Вы ли случайно? smile

В этой теме в сообщении №4 я приводил код для обработки 2-х комбобоксов. Для 4-х можно по аналогии попробовать.

Quote (Evgen83)
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос?

Через "Конструктор". А в макрос "вставить" - "через" имена типа ComboBox1 (можно изменить на более содержательные типа MyComboBox или cbCustomers). Смотрите ссылку - всё поймете.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 27.07.2012, 00:07
 
Ответить
СообщениеEvgen83, а вот недавно была похожая тема http://www.excelworld.ru/forum/2-1895-1 . Там в качестве Гостя не Вы ли случайно? smile

В этой теме в сообщении №4 я приводил код для обработки 2-х комбобоксов. Для 4-х можно по аналогии попробовать.

Quote (Evgen83)
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос?

Через "Конструктор". А в макрос "вставить" - "через" имена типа ComboBox1 (можно изменить на более содержательные типа MyComboBox или cbCustomers). Смотрите ссылку - всё поймете.

Автор - Gustav
Дата добавления - 26.07.2012 в 23:54
RAN Дата: Пятница, 27.07.2012, 12:29 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А зачем тут несколько комбо? Вся прелесть идеи, что один комбо обрабатывает любое количество диапазонов и любое количество списков. smile

Попавил глюк и ошибку.
К сообщению приложен файл: 7581352.xls (46.0 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 27.07.2012, 14:19
 
Ответить
СообщениеА зачем тут несколько комбо? Вся прелесть идеи, что один комбо обрабатывает любое количество диапазонов и любое количество списков. smile

Попавил глюк и ошибку.

Автор - RAN
Дата добавления - 27.07.2012 в 12:29
Evgen83 Дата: Пятница, 27.07.2012, 15:50 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

gustav, время катастрофически не хватает для внимательного вникания, наскоряк "испластал" весь код - одни ошибки))) воспользовался Вашим советом насчёт "конструктора", спасибо!
 
Ответить
Сообщениеgustav, время катастрофически не хватает для внимательного вникания, наскоряк "испластал" весь код - одни ошибки))) воспользовался Вашим советом насчёт "конструктора", спасибо!

Автор - Evgen83
Дата добавления - 27.07.2012 в 15:50
Evgen83 Дата: Пятница, 27.07.2012, 15:51 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

ran, я Ваш должник!))) отличный код!!! работает отлично и просто можно добавить новые столбцы. Единственный вопрос про запрет на ввод данных в поле не из списка - в свойствах Style=0, а ввести ничего "лишнего" нельзя. Как это реализовано? СПАСИБО!
 
Ответить
Сообщениеran, я Ваш должник!))) отличный код!!! работает отлично и просто можно добавить новые столбцы. Единственный вопрос про запрет на ввод данных в поле не из списка - в свойствах Style=0, а ввести ничего "лишнего" нельзя. Как это реализовано? СПАСИБО!

Автор - Evgen83
Дата добавления - 27.07.2012 в 15:51
Evgen83 Дата: Четверг, 02.08.2012, 20:34 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, доброго дня! Во вложении файл, в котором я использовал вариант Вашего кода. Хотел спросить: как можно запретить редактирование верхнего ряда строк с 1 по 13. Дело в том, что если вставить курсор, например в ячейку С9, то надпись "Менеджер по документам" исчезает. Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант. Через "Рецензирование" и "Защитить лист" то-же не получилось. Заранее благодарен!
К сообщению приложен файл: _1.rar (40.9 Kb)
 
Ответить
СообщениеRAN, доброго дня! Во вложении файл, в котором я использовал вариант Вашего кода. Хотел спросить: как можно запретить редактирование верхнего ряда строк с 1 по 13. Дело в том, что если вставить курсор, например в ячейку С9, то надпись "Менеджер по документам" исчезает. Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант. Через "Рецензирование" и "Защитить лист" то-же не получилось. Заранее благодарен!

Автор - Evgen83
Дата добавления - 02.08.2012 в 20:34
RAN Дата: Четверг, 02.08.2012, 21:52 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (Evgen83)
Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант

И правильно сделал!
А чуть подумать?
If Target.Row (условие) Then Exit Sub

PS
Quote (Evgen83)
но руководитель забраковал этот вариант

подразумевает, что вы чему-то учитесь!


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Quote (Evgen83)
Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант

И правильно сделал!
А чуть подумать?
If Target.Row (условие) Then Exit Sub

PS
Quote (Evgen83)
но руководитель забраковал этот вариант

подразумевает, что вы чему-то учитесь!

Автор - RAN
Дата добавления - 02.08.2012 в 21:52
Evgen83 Дата: Четверг, 02.08.2012, 22:16 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, добавил такую строку [vba]
Code
If Target.Cells.Count > 1 Then HideCombo: Exit Sub
[/vba]. Все ОК. Еще раз Спасибо!


Сообщение отредактировал Evgen83 - Четверг, 02.08.2012, 22:18
 
Ответить
СообщениеRAN, добавил такую строку [vba]
Code
If Target.Cells.Count > 1 Then HideCombo: Exit Sub
[/vba]. Все ОК. Еще раз Спасибо!

Автор - Evgen83
Дата добавления - 02.08.2012 в 22:16
RAN Дата: Пятница, 03.08.2012, 09:19 | Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Code
If Target.Row < 13 Then Exit Sub
[/vba]
было бы уместнее. smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Code
If Target.Row < 13 Then Exit Sub
[/vba]
было бы уместнее. smile

Автор - RAN
Дата добавления - 03.08.2012 в 09:19
Evgen83 Дата: Воскресенье, 05.08.2012, 22:19 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, как то я сразу и не сообразил) действительно логичнее ограничить до этой строки
 
Ответить
СообщениеRAN, как то я сразу и не сообразил) действительно логичнее ограничить до этой строки

Автор - Evgen83
Дата добавления - 05.08.2012 в 22:19
  • Страница 1 из 1
  • 1
Поиск:

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