Обзор различий между элементами управления формы и элементами ActiveX в Excel
Почему 2 вида управления доступно в Excel? (2 кнопки, 2 поля со Списком, 2 флажка и т. д...)
в чем разница между Формы Контроля и Элементы Управления ActiveX? Какой из них мне использовать?
некоторые примеры кода я нахожу онлайн-работу с моими элементами управления, но другие нет. Почему?
Как работать с каждым типом, и как я могу сказать разница?
1 ответов
существует [вечная] путаница вокруг два типы элементов управления, доступных для Excel-усугубляется контрастным терминология используется различными онлайн-источниками.
это только общий обзор различий между Управления и Элементы Управления ActiveX (на основе моих старых заметок, которые помогли мне, наконец, выяснить различия!) Посетите включенные ссылки для более подробной информации информация о каждом элементе управления, включая код и примеры проектов. ☺
(адаптировано из моего оригинального поста здесь - теперь закрытый)
описание:
-
здесь два типы управления: управления и элементы управления ActiveX:
и типы элементов управления могут использоваться на рабочих листах но!--18-->только ActiveX элементы управления можно использовать на пользовательские формы.
элементы управления формы являются частью формы коллекция (так же, как объекты рисования), и, таким образом, называются как:
элементы управления ActiveX в основном являются частью рабочего листа и поэтому называются как:
и типы элементы управления могут быть созданы, изменены и удалены с листа или программно с помощью VBA, однако 2 типа элементов управления имеют слегка изменяющийся синтаксис при использовании VBA для ссылки на них.
некоторые сайты обсуждают также обсудить Форма Сведения. Это не более чем userform сделано специально для ввода данных / манипуляции данными, поэтому было бы разумнее называть их (более знакомыми звучание) "Ввод Данных Userform".
-
офисная документация также иногда ссылается на лист как форма. Пока это технически правильно, не позволяйте этому сбить вас с толку. Подумайте о том, что слово "форма" используется в общий смысл:
два типа Управление
Управления
Элементы Управления ActiveX
эти двое выглядят, ведут себя и управляются одинаково, но не одинаково. (List здесь.)
например, давайте сравним два типа Полей. В некоторых языках программирования сопоставимые элементы управления называются "выпадающее меню" или "выпадающий список". В Excel, у нас есть "Поле Со Списком Управления Формой" и "Поле Со Списком Элементов Управления ActiveX":
(нажмите изображение для увеличения.)
☆ " имя по умолчанию " применяется к элементам управления, созданным вручную. Элементы управления, созданные программным способом, не имеют (или не требуют) имени по умолчанию и поэтому должны иметь его назначается сразу после создания.
(источник: мой ответ:)
Контроль Наличия
это изображение ниже показывает, какие общие элементы управления вообще доступно для использования в рабочих листах и формах пользователей.
другие факторы могут повлиять на контроль доступность.
Office.com : почему отключены команды или элементы управления, связанные с формой на ленте?
Office.com : обзор форм, элементов управления формами и элементов ActiveX на листе
об элементах ActiveX и связанной с ними безопасности Заботы
элемент управления ActiveX является расширение на панель инструментов VBA. Элементы ActiveX используются так же, как и стандартные встроенные элементы управления, например элемент управления CheckBox. При добавлении элемента управления ActiveX в приложение он становится частью среды разработки и выполнения и предоставляет новые функциональные возможности для приложения.
элемент управления ActiveX реализуется как сервер в процессе (обычно небольшой объект), который может использоваться в любом контейнере OLE. Обратите внимание, что полная функциональность элемента управления ActiveX доступна только при использовании в контейнере OLE, предназначенном для управления ActiveX.
этот тип контейнера, который называется контейнер управления или контроль объекта, может управлять элементом управления ActiveX с помощью свойств и методов элемента управления и получает уведомления от элемента управления ActiveX в виде событий. На следующем рисунке показано взаимодействие:
Читайте также:
Википедия: ActiveX
Symantec.com : Обсуждение уязвимостей ActiveX
How-To Geek:что такое элементы управления ActiveX и почему они опасны
Кнопки Выбора (Радиокнопки)
в Excel два типа переключателей фактически называются Пуговицы!--19-->. Чтобы еще больше запутать дело:
имя элемента управления формы по умолчанию -
OptionButton1
.имя элемента управления ActiveX по умолчанию -
Option Button 1
.
хороший способ отличить их-открыть список свойств элемента управления (на ленте под вкладкой разработка или щелкнув правой кнопкой мыши элемент управления и выбрав Properties
, или нажав Ф4), потому что ActiveX control имеет гораздо больше опций, чем более простой контроль формы.
опции кнопки и флажки могут быть связаны друг с другом (так что только один вариант может быть выбран из группы), поместив их в общий Группы.
выберите элемент управления и затем, удерживая Ctrl при выборе каждого из других элементов управления, которые вы хотите сгруппировать. Щелкните правой кнопкой мыши элемент управления group box и выберите
Grouping
→Group
.
первые две ссылки ниже являются отдельными наборами инструкций для обработки каждого типа кнопки опции.
ОБРАБОТКА СОБЫТИЙ УПРАВЛЕНИЯ:
события управления формой (Click
событие только)
события управления формой могут реагировать только на одно событие:the Click
событие. (Подробнее здесь.) Обратите внимание, что этот раздел не применяется к userforms так как они используют только элементы управления ActiveX.
чтобы добавить процедуру для Click
событие:
Правой Кнопкой Мыши и выберите
Assign Macro...
-
в диалоговом окне назначить макрос':
выберите существующую процедуру и нажмите OK, или
создайте новую процедуру в VBE, нажав новый..., или
запишите новый макрос, нажав запись..., или
-
чтобы удалить назначенное событие, удалите его имя из (ie., фон) будет "заблокирован" в любых областях, покрытых элементом управления, поэтому вам может потребоваться назначить те же события элементам управления, а также userform.
например, чтобы заставить эту пользовательскую форму ответить на
MouseMove
везде, тот же код события был применен к userform, текстовые поля, кнопки опций и кадр:
ПРИМЕРЫ VBA
добавить/изменить / удалить кнопку управления формой с помощью VBA:
Sub formControl_add() 'create form control Dim ws As Worksheet: Set ws = ActiveSheet With ws.Shapes.AddFormControl(xlOptionButton, 25, 25, 100, 100) .Name = "cOptionButton1" 'name control immediately (so we can find it later) End With End Sub Sub formControl_modify() 'modify form control's properties Dim ws As Worksheet: Set ws = ActiveSheet ws.Shapes("cOptionButton1").Select With Selection 'shapes must be Selected before changing .Characters.Text = "wxyzabcd" End With End Sub Sub formControl_delete() 'delete form control Dim ws As Worksheet: Set ws = ActiveSheet ws.Shapes("cOptionButton1").Delete End Sub
Символы (Excel)
добавить/изменить / удалить кнопку команды ActiveX с помощью VBA:
Sub activexControl_add() 'create ActiveX control Dim ws As Worksheet: Set ws = ActiveSheet With ws.OLEObjects.Add("Forms.CommandButton.1") .Left = 25 .Top = 25 .Width = 75 .Height = 75 .Name = "xCommandButton1" 'name control immediately (so we can find it later) End With End Sub Sub activexControl_modify() ' modify activeX control's properties Dim ws As Worksheet: Set ws = ActiveSheet With ws.OLEObjects("xCommandButton1").Object .Caption = "abcxyz" .BackColor = vbGreen End With End Sub Sub activexControl_delete() ' delete activeX control Dim ws As Worksheet: Set ws = ActiveSheet ws.OLEObjects("xCommandButton1").Delete End Sub
добавление / удаление элементов из поля со списком управления формой:
Sub ComboBox_addRemoveItems_FormControl() Dim ws As Worksheet: Set ws = ActiveSheet 'add item to form control combo box ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.AddItem "abcd" 'remove all items from from form control combo bo ActiveWorkbook.Sheets("Sheet1").Shapes("Drop Down 1").ControlFormat.RemoveAllItems End Sub
добавление / удаление элементов из ActiveX поле со списком:
Sub ComboBox_addRemoveItems_ActiveXControl() Dim ws As Worksheet: Set ws = ActiveSheet 'add items to ActiveX combo box ActiveWorkbook.Sheets("Sheet1").ComboBox1.AddItem "abcd" 'remove all items from ActiveX combo box ActiveWorkbook.Sheets("Sheet1").ComboBox1.Clear End Sub
Дополнительная Информация:
Office.com : добавить флажок или переключатель (управления)
Office.com : добавить флажок, кнопку опции или кнопку переключения (элементы управления ActiveX)
Office.com : обзор форм, элементов управления форм и элементов ActiveX на лист
Office.com : выбор с помощью переключателей (флажки и списки)
Office.com : добавление, изменение, поиск и удаление строк с помощью формы данных
MSDN:члены формы VBA
Exceldemy:как использовать элементы управления формы в Excel
MSDN:использование элементов управления Windows Forms на листах Excel (Visual Studio)
Microsoft TechNet:поведение элементов управления ActiveX, встроенных в Office документы
Переполнение Стека : в чем разница между "управления" и "элемент ActiveX" в Excel 2010?