Microsoft Excel Visual Basic para Aplicativos RESUMO: O Objeto Range Por Fernando de Carvalho Navarro Abril/2013
O Objeto Range Este é, talvez, o objeto mais utilizado e necessário no Excel. É sobre as células e intervalos que você insere valores, efetua cálculos e aplica as mais variadas formatações. Genericamente, ele pode ser representado com a seguinte sintaxe: Range(intervalo) O objeto Range pode referenciar uma célula, um intervalo, vários intervalos ou todas as células da planilha. Você pode representar intervalos que estão na mesma planilha das seguintes formas: Range("A5") ' Célula A5 Range("H2:J13") ' Intervalo H2 até J13 Range("C5:C10,E5:E10,G5:G10") ' Três intervalos não adjacentes Range("A1","C7").Select ' Intervalo A1 até C7 Range("J:K") ' Toda a coluna J até a coluna K Range("3:3") ' Toda a linha 3 Range("Taxa") ' Intervalo nomeado Taxa Quando as referências não estão na mesma planilha você precisa qualificar a sintaxe, incluindo o nome da planilha. A linha abaixo referencia o intervalo A5 até A15 da planilha Plan1 : Worksheets("Plan1").Range("A5:A15") Você pode ir mais além, apontando para um intervalo que se encontra numa outra pasta de trabalho que está aberta, como no exemplo: Workbooks("Vendas.xlsx").Worksheets("Janeiro").Range("A1:C5") Nota: Não é possível usar a sintaxe acima para apontar para intervalos em pastas de trabalho fechadas. Alternativamente você pode usar a propriedade Cells do objeto Range para fazer referência a intervalos. A sintaxe para uso da propriedade Cells é a seguinte: Cells(linha, coluna) Quando usada sem os argumentos, Cells refere-se a toda a planilha, caso contrário especifica uma única célula localizada pelo número de linha e coluna. No exemplo a seguir, a sintaxe faz referência à célula C2 da planilha Plan2 : Worksheets("Plan2").Cells(2, 3) A próxima linha mostra uma referência a um intervalo de 100 células, partindo de A1 até J10, na planilha ativa: Range(Cells(1, 1), Cells(10, 10)) No caso acima, a propriedade Cells foi usada para determinar o início e o final do intervalo referenciado pelo objeto Range. A propriedade Cells também permite usar letras para especificar uma coluna fixa. No exemplo a seguir, se a variável linha contém o número 10, então a referência será para a célula que está na linha 10, coluna B, ou seja, a célula B10. RESUMO O Objeto Range 3
Cells(linha, "B") Se você precisar de referências a intervalos que estão afastados de um determinado endereço por uma quantidade de linhas e colunas, use a propriedade Offset. No exemplo a seguir a célula referenciada é a que está, a partir de A1, uma linha abaixo e duas colunas à direita, ou seja, a célula C2. Range("A1").Offset(1, 2) O próximo exemplo mostra uma referência a um intervalo deslocado, que está 2 linhas acima e 3 colunas à esquerda de D5. Observe os argumentos negativos. Neste caso, o intervalo de destino é A3 até C10. Range("D5:F12").Offset(-2, -3) A vantagem das propriedades Cells e Offset se torna evidente quando você usa variáveis ao invés dos números de linha e coluna, ou mesmo endereços fixos. Quando você precisar de referência a colunas inteiras ou linhas inteiras, use expressões como nos exemplos abaixo: Columns("A:D") Rows("2:5") A propriedade Value do objeto Range é a que efetivamente se refere ao seu valor (conteúdo). Você poderá recuperar o conteúdo de uma célula ou atribuir um valor a uma célula ou intervalo. Veja os exemplos: MsgBox Range("C5").Value Range("B7").Value = 1000 Range("D2:D18") = 0 ' Exibe o valor de C5 numa caixa de mensagem ' Atribui o valor 1000 à célula B7 ' Atruibui zero a todas as células do intervalo Como a propriedade Value é a propriedade padrão do objeto Range, você pode omiti-la durante a atribuição de valores. Na última linha dos exemplos acima, ela foi omitida. A propriedade ActiveCell do objeto Range refere-se à célula ativa e é uma das propriedades mais úteis, uma vez que você pode aplicar atributos, valores ou deslocamentos à célula ativa, não importa qual seja. Veja os exemplos: ActiveCell.Value = "Total" ActiveCell.Offset(1, 0) = 0 ' Atribui o texto Total à celula ativa ' Atribui 0 à célula abaixo da célula ativa Agora, com relação aos métodos (ações), o método Select do objeto Range é o mais usado. Ele permite selecionar uma célula, um intervalo, vários intervalos ou até a planilha inteira. Alguns exemplos: Range("C1:C5").Select ActiveCell.Offset(1, 0).Select ' Seleciona o intervalo C1 até C5 ' Seleciona a célula abaixo da célula ativa Antes de selecionar um intervalo que está em outra planilha é necessário ativar a outra planilha, senão o VBA reportará um erro. Sheets("Plan2").Select Range("C5:H7").Select ' Seleciona a planilha Plan2 ' Seleciona o intervalo C5 até H7 4 RESUMO O Objeto Range
Até agora você aprendeu algumas maneiras de representar intervalos no VBA, através do objeto Range, das propriedades Value, ActiveCell, Cells, Offset, Rows e Columns e do método Select. Veja a seguir uma lista maior que relaciona as principais propriedades e métodos do objeto Range. Logo em seguida você verá muitos exemplos de aplicação dessas propriedades e métodos, que representam excelente fonte de aprendizado. Propriedades para conteúdo e seleção ActiveCell Address Cells ColumnWidth Columns Count CutCopyMode EntireColumn EntireRow Formula FormulaR1C1 Locked Name Offset Resize RowHeight Rows Selection Retorna uma célula ativa (objeto Intervalo). Somente leitura. Endereço da célula no estilo $A$1 (endereço absoluto). Retorna todas as células da planilha, ou uma única célula especificada por um índice de linha e de coluna. Retorna ou define a largura de uma ou mais colunas. Retorna uma ou mais colunas. Um índice especifica uma única coluna. Retorna a contagem de células do intervalo. Somente leitura. Quando definido como False, cancela o modo Recortar/Copiar. Especifica linhas inteiras usando o intervalo selecionado. Especifica linhas inteiras usando o intervalo selecionado. Contém uma fórmula usando endereços absolutos (estilo $A$1). Contém uma fórmula usando endereços relativos (estilo R1C1). Indica se a célula ou intervalo está travado (True) ou não (False). Define ou retorna um nome para o intervalo especificado. Retorna um intervalo a partir de um deslocamento relativo ao intervalo original especificado. Os parâmetros indicam o número de linhas e colunas a deslocar. O deslocamento de linha pode ser para baixo (número positivo) ou para cima (número negativo). O deslocamento de coluna pode ser para a direita (número positivo) ou para a esquerda (número negativo). Retorna um intervalo redimensionado, conforme indicado por seus dois parâmetros: nº de linhas e nº de colunas. A origem do intervalo permanece no canto superior esquerdo. Retorna ou define a altura de uma ou mais linhas. Retorna uma ou mais linhas. Um índice especifica uma única linha. Retorna um objeto Intervalo. Somente leitura. RESUMO O Objeto Range 5
Propriedades para formatação BorderAround Borders Font Define características para a borda de contorno do intervalo. Deve ser complementada com outras sub-propriedades. Veja complemento em Propriedades específicas para bordas, adiante. Define características para a borda individual especificada. Deve ser complementada com outras sub-propriedades. Veja complemento em Propriedades específicas para bordas, adiante. Define características de texto. Deve ser complementada com outras sub-propriedades. Veja detalhes em Propriedades específicas para fontes. HorizontalAlignment Alinhamento horizontal do conteúdo da célula. Interior Orientation VerticalAlignment WrapText Interior (preenchimento) da célula. Veja detalhes em Propriedades Específicas para o Interior de Células. Direção de escrita horizontal ou vertical do conteúdo da célula. Alinhamento vertical do conteúdo da célula. Determina se o texto terá retorno automático de linha na mesma célula (True) ou não (False). Propriedades específicas para fontes ColorIndex Color FontStyle Name Size StrikeThrough Subscript Superscript Underline Índice da cor aplicada ao texto. Veja tabela de cores mais adiante. Número inteiro que representa uma cor misturada. Use a função RGB para obter a cor. Caracteriza o tipo de ênfase: normal, negrito, itálico ou negrito itálico. Nome da fonte. Depende das fontes instaladas no Windows. Determina o tamanho do texto em pontos. Especifica se o texto será tachado (True) ou não (False). Texto subscrito (True) ou não (False). Texto sobrescrito (True) ou não (False). Determina o tipo de sublinhado a ser aplicado no texto. Propriedades específicas para bordas ColorIndex Índice da cor aplicada à borda. Veja tabela de cores mais adiante. 6 RESUMO O Objeto Range
Color LineStyle Weight Número inteiro que representa uma cor misturada. Use a função RGB para obter a cor. Estilo de linha para a borda. Espessura da borda. Propriedades específicas para interior de células ColorIndex Color Pattern PatternColorIndex Índice da cor aplicada à borda. Veja tabela de cores mais adiante. Número inteiro que representa uma cor misturada. Use a função RGB para obter a cor. Estilo de padrão (textura) para preenchimento das células. Índice da cor aplicada ao padrão. Veja tabela de cores mais adiante. Métodos Activate AutoFit Clear ClearContents ClearFormats ClearNotes Copy CurrentRegion Cut Delete Insert Paste Range Select TextNote UsedRange Ativa uma única célula no intervalo selecionado, sem desmarcá-lo. Altera a largura de colunas ou altura de linhas para o melhor ajuste. Limpa todo o intervalo selecionado: conteúdo e formato. Limpa todo o conteúdo do intervalo selecionado. Limpa toda a formatação do intervalo selecionado. Limpa todas as notas do intervalo especificado. Copia o objeto para a Área de Transferência ou para outro destino. Retorna todas as células numa área contínua adjacente à seleção atual. Recorta o objeto para a Área de Transferência ou para outro destino. Exclui células ou outros objetos. Insere células, linhas ou colunas, deslocando o local da inserção. Cola o conteúdo da Área de Transferência do Windows. Retorna um objeto Intervalo, cujo endereço está especificado. Seleciona uma ou mais células ou intervalos, retornando o objeto Célula Ativa (ActiveCell) ou a coleção Intervalo (Range). Retorna ou define uma anotação para uma célula no intervalo. Retorna todas as células com valor numa planilha de trabalho. RESUMO O Objeto Range 7
Para uma explicação mais completa sobre essas propriedades e métodos (e outros não relacionados aqui), acesse a ajuda do Visual Basic. Exemplos de Aplicação A seguir você verá uma série de exemplos de aplicação das propriedades e métodos vistos até aqui, com algumas possibilidades de variação em sua sintaxe. Para uma informação completa sobre a palavra-chave, selecione-a com o mouse na listagem e pressione a tecla F1 para obter uma explicação detalhada. Atribuição de valores ActiveCell.Value = "Totais" ' Armazena o texto "Totais" na célula ativa Range("A1").Value = 100 ' Atribui 100 à célula A1 Worksheets("Plan1").Range("A1").Value = 100 ' Atribui 100 à célula A1 em Plan1 ' A linha seguinte atribui o valor 100 à célula A1 da planilha Plan1 do arquivo Vendas.xlsx Workbooks("Vendas.xlsx").Worksheets("Plan1").Range("A1").Value = 100 Referência Absoluta: Atribui 0 à célula da linha 4 e coluna 5: Cells(4, 5).Value = 0 Range("E4").Value = 0 [E4] = 0 ' Forma matricial (linha, coluna) ' Usando endereçamento ' Forma abreviada Referência Relativa: Atribui 0 à célula da linha 4, coluna 5, partindo do intervalo selecionado: Selection.Cells(4, 5).Value = 0 Selection(4, 5) = 0 ' Forma matricial ' Forma abreviada Atribuição de fórmulas Range("B2:B6").Select Selection.Formula = 100 ActiveCell.Formula = 0 ActiveCell.Offset(-1; 0).Formula = 1 Selection.Formula = "=B1*5" Selection.FormulaR1C1 = "=R[-6]C[-1]*5" ' Seleciona um intervalo ' Insere o número 100 nas células ' Coloca zero na célula ativa ' Coloca 1 na célula acima da ativa ' Insere uma fórmula na seleção ' Insere uma fórmula na seleção, estilo R1C1 Recuperação do conteúdo de uma célula No exemplo, a célula B2 contém a fórmula "=B1*5", resultando "R$ 5,00" (formato moeda). O valor é retornado numa variável qualquer, por exemplo, no caso Conteúdo. Conteúdo = Range("B2").Formula ' Fórmula original: "=B1*5" Conteúdo = Range("B2").FormulaR1C1 ' Fórmula na notação R1C1: "=L[-1]C*5" Conteúdo = Range("B2").Text ' Conteúdo formatado: "R$5,00" Conteúdo = Range("B2").Value ' Conteúdo não formatado: "5" Conteúdo = Range("B2") ' Conteúdo não formatado: "5" Selection.Formula = Selection.Value ' Converte fórmulas para valores Range("B2").Formula = Range("B2").Value ' Converte fórmulas para valores Seleção de intervalos Range("A1").Select [A1].Select Range("A1:C5").Select [A1:C5].Select Range("A1", "D10").Select Range("Tabela1").Select ' Forma normal de representação de intervalo ' Forma simplificada ' Células adjacentes ' Células adjacentes (forma simplificada) ' Seleciona o intervalo A1 até D10 ' Seleção de intervalo nomeado 8 RESUMO O Objeto Range
[Tabela1].Select ' Seleção de intervalo nomeado Range("A1:C5,G1:H5").Select ' Células não adjacentes Cells(1, 4).Select ' Célula da linha 1, coluna 4 Cells(5, "H").Select ' Seleciona a célula da linha 5 e coluna H Cells(6).Select ' Sexta célula da planilha Selection.Cells(1, 4).Select ' Linha 1, coluna 4, no intervalo selecionado Selection.Cells(6).Select ' 6ª célula dentro intervalo selecionado Set Totais = Range("B2:E4") Totais.Cells(Totais.Cells.Count).Select Totais.Rows(2).Select Totais.Cells(8).Select Totais.Columns(Totais.Columns.Count).Select Totais.Cells(1).EntireRow.Select Totais.EntireColumn.Select Totais.CurrentRegion.Select [B2:E4].Select Selection.Cells(Selection.Cells.Count).Select Columns(2).Select Columns("B:D").Select ActiveSheet.UsedRange.Font.ColorIndex = 4 ' Atribui referência a um intervalo ' para selecionar sua última célula ' Seleciona a 2ª. linha do intervalo ' Seleciona a 8ª célula do intervalo ' Seleciona sua última coluna ' Seleciona toda linha da 1ª. célula ' Colunas inteiras do intervalo ' Região corrente de células com valor ' Seleciona o intervalo B2:E4 ' e seleciona sua última célula ' Seleciona a 2ª. coluna ' Seleciona colunas B à D ' Texto verde no intervalo usado Seleções úteis de intervalos, partindo da Célula Ativa Seleciona da célula ativa até a última célula com valor, abaixo (como em Ctrl + Shift + ): Range(ActiveCell, ActiveCell.End(xlDown)).Select Seleciona da célula ativa até a última célula com valor, acima (como em Ctrl + Shift + ): Range(ActiveCell, ActiveCell.End(xlUp)).Select Seleciona da célula ativa até a última célula com valor, à direita (como em Ctrl + Shift + ): Range(ActiveCell, ActiveCell.End(xlToRight)).Select Seleciona da célula ativa até a última célula com valor, à esquerda (como em Ctrl + Shift + ): Range(ActiveCell, ActiveCell.End(xlToLeft)).Select Seleciona a região corrente ao redor da célula ativa (como em Ctrl + Shift +.): ActiveCell.CurrentRegion.Select Seleciona a última célula da coluna A (A65536 para Excel 2003 e A1048576 a partir do Excel 2007): Cells(Rows.Count, "A").Select Seleciona a última célula com algum valor na coluna A: Cells(Rows.Count, "A").Select.End(xlUp).Select Seleciona da célula A1 até a última célula com valor na planilha (como em Ctrl + End ): Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).Select Seleciona a coluna inteira onde se encontra a célula ativa (como em Ctrl + espaço ): ActiveCell.EntireColumn.Select Seleciona a linha inteira onde se encontra a célula ativa (como em Shift + espaço ): RESUMO O Objeto Range 9
Activecell.EntireRow.Select Seleciona a planilha toda, quando não há valores ao redor da célula ativa (como em Ctrl + T ): Cells.Select Seleciona dois intervalos ao mesmo tempo: A1 até B10 e E1 até F10 (união): Union(Range("A1:B10"), Range("E1:F10")).Select Seleciona o intervalo resultante da parte comum entre os intervalos A1:B10 e A5:H5 (intersecção): Intersect(Range("A1:B10"), Range("A5:H5").Select Nota: Os exemplos acima podem também ser usados com o objeto Selection. Alteração de intervalos selecionados ActiveCell.Offset(1; 2).Activate ActiveCell.Offset(1; 2).Select Linha = ActiveCell.Row Coluna = ActiveCell.Column ActiveCell.Offset(1; 1).Select Range("A10").Offset(0, 0).Select Selection.Offset(2; -1).Activate Set Totais = Range("B2:E4") Totais.Offset(1, 0).Select Totais.Offset(0, Totais.Columns.Count).Select Totais.Resize(, 4).Select ' Desce uma linha e avança duas colunas ' Desce uma linha e avança duas colunas ' Obtém a linha da célula ativa ' Obtém a coluna da célula ativa ' Move a célula ativa 1 linha e 1 coluna ' Célula A10, sem deslocamento ' Move a seleção de células ' Atribui referência a um intervalo ' Seleciona mesma área, 1 linha abaixo ' Seleciona mesma área, à direita ' Inclui mais uma coluna no intervalo ' Expande o intervalo definido em uma célula, em todas as direções: Totais.Offset(-1; -1).Resize(Totais.Rows.Count + 2; Totais.Columns.Count + 2).Select ' Seleciona toda a Região Corrente, com exceção da 1ª linha (cabeçalho) Selection.CurrentRegion.Resize(Selection.CurrentRegion.Rows.Count 1).Offset(1, 0).Select Nomeação de células e intervalos Range("B2:E4").Name = "Semestre1" ' Atribui o nome ao intervalo Limpeza de células Selection.ClearContents Range("F6").ClearContents Cells.ClearContents Range("A1:A20").Clear ActiveCell.ClearFormats ' Limpa o conteúdo e mantém formatos na seleção ' Limpa o conteúdo e mantém formatos em F6 ' Apaga todo o conteúdo da planilha ' Limpa tudo de A1 até A20: conteúdo e formatos ' Limpa só formatos na célula ativa Obtenção de endereços de intervalos x = ActiveCell.Address ' Armazena o endereço na variável x Movimentação de conteúdo (como criado originalmente pelo gravador de macros) Range("D6").Select Selection.Cut Range("F6").Select ActiveSheet.Paste ' Seleciona o intervalo de origem ' Recorta ' Seleciona o intervalo de destino ' Cola Movimentação de conteúdo (forma simplificada) Range("D6").Cut Range("F6") ' Ou, em outro exemplo... 10 RESUMO O Objeto Range
Range("B3:B6").Cut Range("D3") ' Recorta B3:B6 e cola a partir de D3 Cópia de conteúdo (como criado originalmente pelo gravador de macros) Range("D5").Select Selection.Copy Range("G3:I10").Select ActiveSheet.Paste Application.CutCopyMode = False ' Seleciona o intervalo de origem ' Copia ' Seleciona o intervalo de destino ' Cola ' Encerra a operação de múltiplas cópias Cópia de conteúdo (forma simplificada) Range("D5").Copy Range("G3:I10") Range("D5") = Range("D20") ' Copia D5 e cola em G3 até I10 ' Copia o conteúdo de D20 para D5 Inserção de linhas, colunas e células Rows("1:3").Insert Shift:=xlDown ' Insere 3 linhas, desce as demais Columns("D:D").Insert Shift:=xlToRight ' Insere 1 col., empurra para direita Range("E14:F17").Insert Shift:=xlDown ' Insere células, empurra para baixo Rows(4).Insert ' Insere 1 linha antes da linha 4 Selection.EntireColumn.Insert ' Insere 1 col. inteira antes da sel. Exclusão de linhas, colunas e células Columns("C:E").Select Selection.Delete Shift:=xlToLeft Rows("10:15").Delete Shift:=xlUp Selection.Delete Shift:=xlUp Selection.EntireRow.Delete [C1:D5].EntireColumn.Delete ' Seleciona colunas ' Exclui, puxando as outras p/ esquerda ' Exclui linhas, subindo as outras ' Exclui células, subindo as demais ' Exclui linhas da seleção de células ' Exclui colunas da seleção de células Formatação de linhas e colunas Columns("E:E").ColumnWidth = 18 ' Estabelece nova largura para "E" Cells.ColumnWidth = 10 ' Mesma largura para toda a planilha [D1:D5].RowHeight = 18 ' Largura para as linhas 1 a 5 Selection.EntireRow.AutoFit ' Auto ajuste nas linhas da seleção Columns("C:E").AutoFit ' Auto ajuste nas colunas C à E Formatação de conteúdo Range("A1:A100").Font.Name = "Arial" ' Formata A1 até A100 com Fonte Arial [A1:A100].Font.Name = "Arial" ' Mesma coisa, usando notação simplificada With Range("A1:A12") ' Para o intervalo A1:A12.Font.Bold = True ' Ligar o negrito.font.size = 12 ' Tamanho 12 pontos.font.color = vbblue ' Cor azul.interior.color = RGB(207, 222, 210) ' Preenchimento com cor misturada (RGB).Borders.ColorIndex = 11 ' Todas as bordas em azul escuro (cor 11).HorizontalAlignment = xlcenter ' Alinhamento horizontal centralizado.numberformat = "#,##0.00" ' Formato num. com 2 decimais e sep. de milhar End With Range("A1:A12").ClearFormats ' Limpa toda a formatação aplicada Anotações em células ActiveCell.NoteText Text:="Nota de célula..." ActiveCell.ClearNotes ' Atribui uma nota ' Remove as notas RESUMO O Objeto Range 11
Proteção de células Activecell.Locked = True ' Trava a célula ativa contra edição Cores no Visual Basic e Excel Geralmente utilizadas pelas propriedades de fonte, bordas e padrões, as cores do Excel podem ser representadas por um índice numa tabela com 56 cores básicas, por um número que representa uma cor misturada, ou uma cor do tema presentemente selecionado. Para trabalhar com um índice de cor, use a propriedade ColorIndex, onde você pode representar uma cor predefinida por um número de 0 a 56, sendo o valor 0 definido como transparente (sem cor alguma). Os índices com as cores mais comuns são os de número 1 a 16: Exemplo: 1 - Preto 17 33 49 2 - Branco 18 34 50 3 - Vermelho 19 35 51 4 - Verde 20 36 52 5 - Azul 21 37 53 6 - Amarelo 22 38 54 7 - Magenta 23 39 55 8 - Ciano 24 40 56 9 - Vermelho escuro 25 41 10 - Verde escuro 26 42 11 - Azul Escuro 27 43 12 - Amarelo escuro 28 44 13 - Roxo 29 45 14 - Azul Petróleo 30 46 15 - Cinza claro 31 47 16 - Cinza médio 32 48 ActiveCell.Interior.ColorIndex = 9 ' Aplica fundo vermelho escuro à célula ativa Você poderá usar algumas constantes predefinidas do Visual Basic para estabelecer a cor, pela propriedade Color. Existem as seguintes constantes para as cores mais comuns: vbblack (Preto), vbred (Vermelho), vbgreen (Verde), vbyellow (Amarelo), vbblue (Azul), vbmagenta (Magenta), vbcyan (Ciano) e vbwhite (Branco). Exemplo: ActiveCell.Interior.Color = vbyellow ' Aplica fundo amarelo à célula ativa Para trabalhar com uma cor misturada, use a propriedade Color, onde uma cor é representada por um número inteiro. Por exemplo, o valor de cor de 2150015 representa um verde limão. Como é difícil trabalhar direto com esses números inteiros, o mais prático é usar a função RGB, que converte as tonalidades de Vermelho (Red), Verde (Green) e Azul (Blue) para o inteiro correspondente: 12 RESUMO O Objeto Range
RGB(Vermelho, Verde, Azul) Os três parâmetros representam intensidades que variam de 0 (preto) até 255 (cor totalmente ligada). Veja os seguintes exemplos: ActiveCell.Interior.Color = 2150015 Range("B5").Interior.Color = RGB(255, 0, 0) Range("D1:D12").Font.Color = RGB(45, 118, 87) ' Aplica fundo verde-limão à célula ativa ' Interior de B5 em vermelho ' Cor da fonte para o intervalo D1:D12 A partir da versão 2007, o conceito de Temas é usado em todos os aplicativos do Microsoft Office. Existem constantes predefinidas de cores também para as cores do tema em uso: xlthemecoloraccent1 xlthemecoloraccent2 xlthemecoloraccent3 xlthemecoloraccent4 xlthemecoloraccent5 xlthemecoloraccent6 xlthemecolordark1 xlthemecolordark2 xlthemecolorfollowedhyperlink xlthemecolorhyperlink xlthemecolorlight1 xlthemecolorlight2 RESUMO O Objeto Range 13