XL: Como executar uma macro quando alterar determinadas células

Traduções de Artigos Traduções de Artigos
Artigo: 142154 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

No Microsoft Excel, pode criar uma macro que é chamada quando é introduzido um valor numa célula numa folha específica ou em qualquer folha que está actualmente aberta.

No entanto, Note que deve não chamar macros desnecessariamente porque podem diminuir o desempenho do Excel.

Mais Informação

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Em muitos casos, deverá executar uma macro apenas quando um determinado número de células têm valores introduzidos nos mesmos (referido como as "células chaves" neste documento). Para impedir que uma macro grande execução sempre que é introduzido um valor numa célula de uma folha, tem de verificar se ActiveCell é uma das células chaves. Para o fazer, utilize o método Intersectar ActiveCell e o intervalo que contém as células de chaves para verificar ActiveCell é uma das células chaves. Se estiver ActiveCell no intervalo que contém as células de chaves, pode chamar a macro.

Para executar esta macro de exemplo:
  1. Abra um livro novo.
  2. Na Folha1 na célula A11, escreva a seguinte fórmula:
    =SUM(A1:A10)
  3. Copie esta fórmula para células B11 C11 e D11.

    No exemplo aqui utilizado, a macro faz com que a cor de fundo das células A11 B11 e C11 para alterar para vermelho (ou ColorIndex 3) se valor dessa célula for maior do que 50; caso contrário, cor de fundo da célula será normal. Isto é conseguido procurando entradas nas células a1: A10, B1: B10 e C1:C10. A macro DidKeyCellsChange sempre que é efectuada uma entrada em qualquer célula na Folha1, é executada. Esta macro determina se ActiveCell está no intervalo de células chaves (a1: C10). Se for, a macro KeyCellsChanged é chamada para reavaliar A11:C11 de células.

    As seguintes macros funcionam em conjunto para executar esta funcionalidade. A macro "Auto_Open" tem ser executada uma vez para que as outras macros para serem chamados.
  4. Inserir uma nova folha de módulo. No Microsoft Excel 97, no menu Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic . No Editor, clique em módulo no menu Inserir . No Microsoft Excel versões 5.0 e 7.0, aponte para macro no menu Inserir e, em seguida, clique em módulo .
  5. Escreva o seguinte código de macro na folha do módulo:
    Sub auto_open()
    
       ' Run the macro DidCellsChange any time a entry is made in a
       ' cell in Sheet1.
       ThisWorkbook.Worksheets("Sheet1").OnEntry = "DidCellsChange"
    
    End Sub
    
    
    Sub DidCellsChange()
      Dim KeyCells as String
       ' Define which cells should trigger the KeyCellsChanged macro.
       KeyCells = "A1:A10, B1:B10, C1:C10"
    
       ' If the Activecell is one of the key cells, call the
       ' KeyCellsChanged macro.
       If Not Application.Intersect(ActiveCell, Range(KeyCells)) _
       Is Nothing Then KeyCellsChanged
    
    End Sub
    
    Sub KeyCellsChanged()
       Dim Cell as Object
       ' If the values in A11:C11 are greater than 50...
       For Each Cell In Range("A11:C11")
       If Cell > 50 Then
    
       ' Make the background color of the cell the 3rd color on the
       ' current palette.
       Cell.Interior.ColorIndex = 3
    
       Else
       ' Otherwise, set the background to none (default).
       Cell.Interior.ColorIndex = xlNone
    
       End If
       Next Cell
    
    End Sub
  6. Guarde o livro e, em seguida, fechá-lo.
  7. Abra o livro.

    Isto fará com que a macro Auto_Open seja executada.
  8. Na célula A1, escreva 60 .

    Célula A11 deve mudar para uma cor de fundo vermelho porque alterou uma célula no intervalo KeyCells e o valor da célula A11 tornou-se superior a 50.
  9. Na célula D1, escreva 60

    Nada acontece para a cor de D11, mesmo que o valor D11 agora seja maior do que 50. Não acontece nada porque não está no intervalo KeyCells célula D1.

Referências

No Microsoft Excel versão 7.0, para obter mais informações sobre como executar procedimentos quando ocorre um evento, clique no separador índice remissivo na ajuda do Microsoft Excel, escreva o texto seguinte
procedimentos, executar
Faça duplo clique no texto apropriado para ir para o tópico "Executar procedimentos quando ocorre um evento" .

Propriedades

Artigo: 142154 - Última revisão: 17 de agosto de 2005 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 98 para Macintosh
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 5.0c
  • Microsoft Excel 5.0 para Macintosh
  • Microsoft Excel 5.0a para Macintosh
  • Microsoft Excel 5.0 Standard Edition
Palavras-chave: 
kbmt kbdtacode kbhowto kbprogramming KB142154 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 142154
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com