Compartilhar via


Usar Controles ActiveX em Planilhas

Este tópico aborda as informações específicas sobre como usar os controles ActiveX em planilhas de gráfico e planilhas. Para mais informações gerais sobre como adicionar e trabalhar com controles, veja Usar os controles ActiveX em um documento e Criar uma caixa de diálogo Personalizada.

Tenha em mente os seguintes pontos ao trabalhar com controles em planilhas:

  • Além das propriedades padrão disponíveis para controles ActiveX, as seguintes propriedades podem ser usadas com controles ActiveX no Microsoft Excel: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell e ZOrder.

    Essas propriedades podem definidas e retornadas usando o nome do controle ActiveX. O exemplo a seguir rola a janela da pasta de trabalho para que CommandButton1 fique no canto superior esquerdo.

      Set t = Sheet1.CommandButton1.TopLeftCell
      With ActiveWindow
          .ScrollRow = t.Row
          .ScrollColumn = t.Column
      End With
    
    
  • Alguns métodos e propriedades do Microsoft Excel Visual Basic são desabilitadas quando um controle ActiveX é ativado. Por exemplo, o método Classificar não pode ser usado quando um controle está ativo, portanto o código a seguir falha em um procedimento de evento de clique de botão (porque o controle continua ativo após o usuário clicar nele).

      Private Sub CommandButton1.Click 
          Range("a1:a10").Sort Key1:=Range("a1") 
      End Sub 
    

    Você pode contornar este problema ativando algum outro elemento na planilha antes de usar a propriedade ou método que falhou. Por exemplo, o seguinte código classifica intervalo:

      Private Sub CommandButton1.Click 
          Range("a1").Activate 
          Range("a1:a10").Sort Key1:=Range("a1") 
          CommandButton1.Activate 
      End Sub
    
  • Controles em uma pasta de trabalho do Microsoft Excel inseridos em um documento em outro aplicativo não funcionarão se o usuário clicar duas vezes na pasta de trabalho para editá-la. Os controles funcionarão se o usuário clicar com botão direito na pasta de trabalho e selecionar o comando Abrir comando no menu de atalho.

  • Quando uma pasta de trabalho do Microsoft Excel é salva usando o formato de arquivo de Pasta de Trabalho do Microsoft Excel 5.0/95, as informações do controle ActiveX são perdidas.

  • A palavra-chave Me em um procedimento de evento para um controle ActiveX em uma planilha refere-se à planilha, e não ao controle.

Adicionar Controles com o Visual Basic

No Microsoft Excel, controles ActiveX são representados por objetos OLEObject na coleção OLEObjects (todos os objetosOLEObject também estão na coleção Shapes). Para adicionar programaticamente um controle ActiveX em uma planilha, use o método Adicionar da coleção OLEObjects. O exemplo a seguir adiciona um botão de comando à planilha 1.

Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _ 
    Left:=10, Top:=10, Height:=20, Width:=100

Usar propriedades de controle com o Visual Basic

Geralmente, o código do Visual Basic consultará os controles ActiveX pelo nome. O exemplo a seguir muda a legenda no controle chamado "CommandButton1."

Sheet1.CommandButton1.Caption = "Run"

Observe que ao usar um nome de controle fora do módulo de classe para a planilha que contém o controle, você deverá qualificar o nome de controle com o nome de planilha.

Para alterar o nome de controle usado no código do Visual Basic, selecione o controle e defina a propriedade (Name) na janela de Propriedades.

Como os controles ActiveX também são representados por objetos OLEObject na coleção de OLEObjects, você pode definir as propriedades de controles usando os objetos na coleção. O exemplo a seguir define a posição esquerda do controle chamado "CommandButton1".

Worksheets(1).OLEObjects("CommandButton1").Left = 10

As propriedades de controle que não são mostradas como propriedades do objeto OLEObject podem ser definidas retornando o objeto de controle atual usando a propriedade Objeto. O exemplo a seguir define a legenda para CommandButton1.

Worksheets(1).OLEObjects("CommandButton1"). _ 
    Object.Caption = "run me"

Como todos os objetos OLE também são membros da coleção de Formas, você pode usar a coleção para definir propriedades para vários controles.. O exemplo a seguir alinha borda esquerda da todos os controles da planilha 1.

For Each s In Worksheets(1).Shapes 
    If s.Type = msoOLEControlObject Then s.Left = 10 
Next

Usar Nomes de Controle com as Coleções de Formas e OLEObjects

Um controle ActiveX em uma planilha tem dois nomes: o nome da forma que contém o controle que você pode ver na caixa Name ao exibir a planilha e o nome de código para o controle, que pode ser visto na célula à direita do (Name) na janela de propriedades. Quando você adiciona um controle em uma planilha pela primeira vez, nome da forma e nome do código correspondem. No entanto, se você alterar o nome da forma ou o nome do código, o outro não é alterado automaticamente para corresponder.

Use o nome do código de um controle nos nomes dos seus procedimentos de evento. Entretanto, quando você retornar um controle da coleção Shapes ou OLEObjects para uma planilha, deverá usar o nome da forma, e não o nome do código, para fazer referência ao controle por nome. Por exemplo, suponha que você adicione uma caixa de seleção em uma planilha e os nomes da forma e o nome de código padrão sejam CheckBox1. Se você alterar o nome do código de controle digitando chkFinished ao lado de (Name) na janela de Propriedades, você deve usar chkFinished em nomes de procedimento de evento, mas ainda precisará usar CheckBox1 para retornar a controle das coleçõesShapes ou OLEObject, conforme mostrado no exemplo a seguir.

Private Sub chkFinished_Click() 
    ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 
End Sub

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.