Visão geral das diferenças entre controles de formulários e controles ActiveX no Excel
Por que existem 2 tipos de controlos disponíveis no Excel? (2 botões, 2 combinações, 2 opções, etc...)
Qual é a diferença entre Os controlos dos formulários e Os controlos ActiveX? Qual devo usar?
Algumas amostras de código que encontro online funcionam com os meus controlos, mas outras não. Porquê? Como é que eu trabalho com cada tipo, e como é que sei a diferença?1 answers
Esta é apenas uma visão geral das diferenças entre os controlos da forma
e controlos ActiveX (baseado nas minhas notas antigas que me ajudaram a descobrir as diferenças!) Visite os links incluídos para informações mais detalhadas sobre cada controle incluindo projectos de código e de amostragem. ☺(adaptado do meu post original toma. - agora fechado)
Resumo:
-
Existem dois tipos de controlos: controlos de formulários e controlos ActiveX:
Ambos os tipos de controlos podem ser usados nas folhas de cálculo, mas apenas os controlos ActiveX podem ser usados em formulários de Utilização .
Farmacêutica os controlos fazem parte da colecção (tal como os objectos de desenho), sendo assim referidos como:
Os controlos ActiveX fazem basicamente parte do documento de trabalho, pelo que são referidos como:
Ambos os tipos de controles podem ser criados, modificados e excluídos da planilha, ou programaticamente com VBA, no entanto, os 2 tipos de controles têm uma sintaxe ligeiramente variável ao usar VBA para se referir a o.
Alguns sites discutem também um formulário de Dados . Este é nada mais do que uma userform feita especificamente para a entrada/manipulação de dados, por isso teria feito mais sentido chamá-los (o som mais familiar) "Userform de introdução de Dados".
-
A documentação do serviço refere-se também ocasionalmente a uma folha de trabalho como um formulário. Embora isto seja tecnicamente correcto, não deixes que isto aconteça. confundir-te. Pense na palavra "forma" como sendo usada no sentido geral.:
Dois tipos de controlos
Controlos Dos Formulários
Controlos ActiveX
Por exemplo, vamos comparar os dois tipos de caixas . Em alguma programação as línguas, os controlos comparáveis são referidos como um "menu" ou "lista". No Excel, temos "lista de controlo do formulário", e um "lista de controlo ActiveX":
(Clique na imagem para ampliar.)
☆ "o nome Por omissão" aplica-se aos controlos criados manualmente. Controles criados programaticamente não têm (ou exigem) um nome padrão e, portanto, deve ter um atribuído imediatamente após a criação.
(fonte:)
Disponibilidade De Controlo
Esta imagem abaixo mostra quais os controlos comuns que estão geralmente disponíveis para utilização nas folhas de cálculo e nos formulários de utilizador.
Outros factores podem afectar a disponibilidade de controlo.
Office.com por que razão estão relacionadas com a forma? comandos ou comandos na fita desactivados?
Office.com : resumo dos formulários, dos controlos dos formulários e dos controlos ActiveX numa folha de trabalho
Acerca dos controlos ActiveX e preocupações relacionadas com a segurança
um controle ActiveX é uma extensão para a caixa de ferramentas VBA. Você usa controles ActiveX tal como qualquer um dos padrões controles incorporados, como o Controle Da Caixa De Controle. Quando você adiciona um controle ActiveX a uma aplicação, ela se torna parte do ambiente de desenvolvimento e execução em tempo de execução e fornece uma nova funcionalidade para a sua aplicação.
um controle ActiveX é implementado como um servidor em processo (tipicamente um pequeno objeto) que pode ser usado em qualquer recipiente OLE. Note-se que a funcionalidade completa de um controlo ActiveX só está disponível quando utilizado num contentor OLE concebido para: esteja ciente dos controles ActiveX.
Este tipo de contêiner, chamado recipiente de controle ou objeto de controle, pode operar um controle ActiveX usando o controle de propriedades e métodos, e recebe notificações do controle ActiveX na forma de eventos. A figura seguinte demonstra esta interacção:
Veja Também:
Wikipédia: ActiveX
Symantec.com : análise das vulnerabilidades ActiveX
Como-To Geek : quais são os controles ActiveX e por que são perigosos
Botões De Opção (Botões De Rádio)
No Excel, os dois tipos de botões de rádio são de facto chamados botões de opção . Para confundir ainda mais as coisas:O nome por omissão para o controlo do formulário é
OptionButton1
.O nome por omissão para o controlo ActiveX é
Option Button 1
.
Uma boa maneira de os distinguir é abrindo a lista de Propriedades do controlo (na fita sob a página de desenvolvimento, ou clicando com o botão direito no controlo e escolhendo Properties
, ou batendo F4 ), porque o controlo ActiveX tem muito mais opções que o controle de forma mais simples.
As duas primeiras ligações abaixo são: conjuntos separados de instruções para o manuseamento de cada tipo de botão de opção.Os botões das opções e as opções podem ser ligados entre si (por isso só uma opção de cada vez pode ser seleccionada a partir do grupo), colocando-os numa caixa de grupo partilhada.
Seleccione o controlo da caixa de grupo e mantenha Ctrl enquanto selecciona cada um dos outros controlos que deseja agrupar. Carregue com o botão direito no controlo da caixa de grupo e escolha
Grouping
→Group
.
MANIPULAÇÃO DE EVENTOS DE CONTROLO:
Formem eventos de controlo (Click
Apenas eventos)
Os Eventos de controlo da forma só são capazes de responder a um evento: O Click
Evento. (Mais informações aqui.) Note que esta secção não se aplica às formas de Utilização uma vez que usam apenas os controlos ActiveX.
Para adicionar um procedimento para o Click
Evento:
Clique com o botão direito no controle e escolha
Assign Macro...
-
Na janela 'Atribuir Macro':
Selecione um procedimento existente, e clique em OK, ou,
Crie um novo procedimento no VBE, carregando em novo..., ou,
Grava uma nova macro, carregando em gravar..., ou,
Para remover o evento atribuído, remove o seu nome do campo
Macro Name
e carregue em OK .
Para mudar o nome, editar ou apagar as macros existentes, carregue em Alt+F8 para abrir a interface Macro
:
ActiveX control events
Os controlos ActiveX têm uma lista mais extensade eventos aos quais podem ser configurados para responder.
Para atribuir eventos para os controlos ActiveX, carregue com o botão direito no controlo e escolha View Code
. No VBE, você pode colar em código, ou escolher eventos específicos da lista no canto superior direito da janela do VBE.
(Clique na imagem para ampliar.)
Controlar o tratamento de eventos num formulário de utilizador:
Os Eventos também podem ser utilizados nos controlos das formas de Utilização. Uma vez que apenas os controles ActiveX podem ser colocados um userform, você terá o " mais codificação + mais funcionalidade " trade-off.
Os controlos ActiveX são adicionados às formas de Utilização da mesma forma que são adicionados a uma folha de trabalho. Tenha em mente que quaisquer eventos atribuídos à userform em si (ou seja., fundo) será "bloqueado" em qualquer área coberta por um controle, então você pode precisar atribuir os mesmos eventos para os controles, bem como o userform.
Por exemplo, a fim de fazer com que este formulário de utilizador responda a MouseMove
em qualquer lugar do formulário, o o mesmo código de evento foi aplicado a o formato do utilizador, as caixas de texto, os botões de opção e a moldura:
EXEMPLOS DE VBA
Adicionar/modificar / apagar uma opção de controlo do formulário com o botão 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
Adicionar/modificar / apagar um Botão de comando ActiveX usando 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
Adicionar / Remover itens de uma lista de controlo de formulários:
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
Adicionar / Remover itens de uma lista 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
Mais Informações:
Office.com : adicionar um botão de opção ou opção (formulário controlos)
Office.com : adicionar uma opção, Botão de opção ou botão de comutação ( controlos ActiveX)
Office.com : resumo dos formulários, dos controlos dos formulários e dos controlos ActiveX numa folha de trabalho
Office.com : activar a selecção através dos controlos de escolha (opções e listas)
Office.com : Adicionar, Editar, Procurar e apagar as linhas por utilização de um formulário de Dados
MSDN : membros da forma VBA
MSDN : Utilização dos controlos ActiveX nas folhas (serviço)
Exceldemy : Como Usar Controles de Formulário no Excel
MSDN : usando o Windows Forms controla as folhas de cálculo do Excel (Visual Studio)
Microsoft TechNet : comportamento da ActiveX controlos incorporados nos documentos do Escritório
Estouro da pilha : Qual é a diferença entre "controlos de formulários" e "controlo ActiveX" no Excel 2010?