Pesquisar
Faça uma pergunta »

Excel - Formatação condicional ilimitada

Março 2015


Formatação condicional ilimitada





Introdução


A formatação condicional (ou MFC) permite aplicar a uma ou várias células selecionadas, diferentes formatos que mudarão, automaticamente, em função do valor (ou do resultado da fórmula), que elas contêm.

Para as versões do Excel anteriores a 2007, o número de MFC é limitado a 3. O que é pouco. Tendo visto muitos pedidos para estender esse limite, me diverti escrevendo uma macro que pode fazê-lo sem necessidade de modificá-lo. Ela funciona, conforme a demanda e necessidades.

Princípio


A macro irá recuperar os formatos a serem aplicados em uma planilha chamada MFC , a célula A1 desta mesma planilha é usada para aplicar o formato padrão.
A macro é desencadeada pela apreensão de uma célula, ela usa o MFC nesta célula. Mas para que ela aplique os formatos nas células desejadas e, para não ter que alterar a macro para definir os diversos trechos, programa-se um MFC na célula, com uma fórmula:
=Ma_MFC.
Esta macro também pode efetuar formatos de acordo com os níveis de valores.

Código


Veja o código a ser colocado no módulo ThisWorkbook.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)    
    Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet    
    On Error GoTo fin 'em caso de manipulação errada, trava na seguinte ordem    
    Application.EnableEvents = False    
    Set Ws1 = Sheets("MFC")    
    For i = 1 To Target.FormatConditions.Count    
        Set Mfc = Target.FormatConditions(i)    
        If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then    
            Ws1.Range("A1").Value = Target.Value    
            Set c = Nothing    
            For j = 2 To Ws1.Range("A65536").End(xlUp).Row    
                If Ws1.Range("A" & j) = True Then    
                    Set c = Ws1.Range("A" & j)    
                    Exit For    
                End If    
            Next j    
            If c Is Nothing Then Set c = Ws1.Range("A1")    
            c.Copy    
            Target.PasteSpecial (xlPasteFormats)    
            Application.CutCopyMode = False    
        End If    
    Next i    
    Application.EnableEvents = True    
fim:    
    On Error GoTo 0    
End Sub    

Arquivo anexo


É muito mais fácil ver a sua utilização com um arquivo de exemplo: Baixar o arquivo (em francês)


Tradução feita por Lucia Maurity y Nouira
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Excel-formatacao-condicional-ilimitada.pdf

A ver igualmente

Na mesma categoria

Excel - Mises en forme conditionnelles illimitées
Por wilfried_42 em 30 de março de 2009
Artigo original publicado por wilfried_42. Tradução feita por pintuda.
Este documento, intitulado « Excel - Formatação condicional ilimitada »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.