Здравствуйте! Знатоки 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]
Здравствуйте! Знатоки 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
RAN, я Вам в своей предыдущей теме от имени Гостя ответил)
Касаемо Ваших вопросов:
1. Мне, на Листе1 нужно ещё 3 выпадающих списка, также как и combobox1 они (3 новых) должны занимать целый столбец. (Пардон, если излагаюсь корявым языком, в VBA я кАнкретный новичок))). Они будут делать тоже, что и первый - брать данные из трёх списков (на Лист2), соответственно.
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос? Может я чего не допонимаю...
Примечание: в xls он более 100 кб.
RAN, я Вам в своей предыдущей теме от имени Гостя ответил)
Касаемо Ваших вопросов:
1. Мне, на Листе1 нужно ещё 3 выпадающих списка, также как и combobox1 они (3 новых) должны занимать целый столбец. (Пардон, если излагаюсь корявым языком, в VBA я кАнкретный новичок))). Они будут делать тоже, что и первый - брать данные из трёх списков (на Лист2), соответственно.
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос? Может я чего не допонимаю...
RAN, я "набросал" пример своей задачи в файле. Задача состоит в том, что бы на листе было несколько выпадающих списков, которые в свою очередь брали данные из разных списков (эти списки время от времени будут изменяться). Плюс к заданию: выпадающий список должен "выпадать" на количество занятых строк в списке, но это вроде работает). Я в примере набросал как это примерно должно выглядеть. Не могу добиться, что бы каждый столбец (E, G, I) брал бы данные из соответствующего столбца на Лист2 (A, C, E - соответственно). Пытаюсь повторить исходный код (в первом посте) три раза (для трёх списков) - возникает куча ошибок. Понимаю, что поступаю наверно тупо (копирую код). Наверняка есть более изящные пути. Может немного коряво излагаю суть. Задавайте, если что Уточняющие вопросы))) Спасибо!
RAN, я "набросал" пример своей задачи в файле. Задача состоит в том, что бы на листе было несколько выпадающих списков, которые в свою очередь брали данные из разных списков (эти списки время от времени будут изменяться). Плюс к заданию: выпадающий список должен "выпадать" на количество занятых строк в списке, но это вроде работает). Я в примере набросал как это примерно должно выглядеть. Не могу добиться, что бы каждый столбец (E, G, I) брал бы данные из соответствующего столбца на Лист2 (A, C, E - соответственно). Пытаюсь повторить исходный код (в первом посте) три раза (для трёх списков) - возникает куча ошибок. Понимаю, что поступаю наверно тупо (копирую код). Наверняка есть более изящные пути. Может немного коряво излагаю суть. Задавайте, если что Уточняющие вопросы))) Спасибо!Evgen83
В этой теме в сообщении №4 я приводил код для обработки 2-х комбобоксов. Для 4-х можно по аналогии попробовать.
Quote (Evgen83)
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос?
Через "Конструктор". А в макрос "вставить" - "через" имена типа ComboBox1 (можно изменить на более содержательные типа MyComboBox или cbCustomers). Смотрите ссылку - всё поймете.
В этой теме в сообщении №4 я приводил код для обработки 2-х комбобоксов. Для 4-х можно по аналогии попробовать.
Quote (Evgen83)
2. Я и хотел узнать - как их можно добавить. Если через "Конструктор", то тогда как их "вставить" в макрос?
Через "Конструктор". А в макрос "вставить" - "через" имена типа ComboBox1 (можно изменить на более содержательные типа MyComboBox или cbCustomers). Смотрите ссылку - всё поймете.Gustav
gustav, время катастрофически не хватает для внимательного вникания, наскоряк "испластал" весь код - одни ошибки))) воспользовался Вашим советом насчёт "конструктора", спасибо!
gustav, время катастрофически не хватает для внимательного вникания, наскоряк "испластал" весь код - одни ошибки))) воспользовался Вашим советом насчёт "конструктора", спасибо!Evgen83
ran, я Ваш должник!))) отличный код!!! работает отлично и просто можно добавить новые столбцы. Единственный вопрос про запрет на ввод данных в поле не из списка - в свойствах Style=0, а ввести ничего "лишнего" нельзя. Как это реализовано? СПАСИБО!
ran, я Ваш должник!))) отличный код!!! работает отлично и просто можно добавить новые столбцы. Единственный вопрос про запрет на ввод данных в поле не из списка - в свойствах Style=0, а ввести ничего "лишнего" нельзя. Как это реализовано? СПАСИБО!Evgen83
RAN, доброго дня! Во вложении файл, в котором я использовал вариант Вашего кода. Хотел спросить: как можно запретить редактирование верхнего ряда строк с 1 по 13. Дело в том, что если вставить курсор, например в ячейку С9, то надпись "Менеджер по документам" исчезает. Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант. Через "Рецензирование" и "Защитить лист" то-же не получилось. Заранее благодарен!
RAN, доброго дня! Во вложении файл, в котором я использовал вариант Вашего кода. Хотел спросить: как можно запретить редактирование верхнего ряда строк с 1 по 13. Дело в том, что если вставить курсор, например в ячейку С9, то надпись "Менеджер по документам" исчезает. Хотел добавить эту надпись в список (чтобы выбирать в случае её пропадания), но руководитель забраковал этот вариант. Через "Рецензирование" и "Защитить лист" то-же не получилось. Заранее благодарен!Evgen83