Escolar Documentos
Profissional Documentos
Cultura Documentos
um intervalo atravs
de Macro
Publicado em 15 de maio de 2013 por adilsonsoledade 1 Comentrio
Sub AplicandoBordas_V01()
'
' AplicandoBordas_V01 Macro
'
'
Range("A1:D10").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
No sei vocs, mas o cdigo me parece muito grande para realizar algo to simples quanto aplicar
uma formatao.
Para tentarmos reduzir o cdigo, importante entendermos como as bordas de clulas se apresentam
na estrutura de objetos do VBA.
Dentre as propriedades do objeto Range, existe uma coleo (Classe) denominada Borders.
Atravs de alteraes das propriedades dos elementos desta coleo que podemos aplicar cores,
espessura e estilo de linhas s bordas de um intervalo utilizando VBA.
Os elementos (itens) da coleo Borders e os seus respectivos valores numricos so:
xlDiagonalDown
xlDiagonalUp
xlEdgeLeft
xlEdgeTop
xlEdgeBottom
xlEdgeRight
10
xlInsideVertical
11
xlInsideHorizontal
12
Desta forma para exibirmos ou ocultarmos bordas, devemos acessar os elementos desta coleo e
aplicarmos as mudanas necessrias s suas propriedades.
Normalmente precisamos modificar as seguintes propriedades:
Estilo da linha (LineStyle)
Cor da linha (ColorIndex)
Espessura da linha (Weight)
Assim como a coleo Borders, a propriedade LineStyle pode apresentar uma srie de valores
definidos pelas constantes a seguir. Ao lado de cada uma est a descrio do tipo de linha que define.
Nome
Descrio
xlContinuous
Linha contnua
xlDash
Linha tracejada
xlDashDot
xlDashDotDot
xlDot
Linha pontilhada
xlDouble
Linha dupla
xlLineStyleNone
Sem linha
xlSlantDashDot
Traos inclinados
Nome
Descrio
xlHairline
xlThin
Fina
xlMedium
Mdia
xlThick
Grossa
Sub AplicandoBordas_V02()
'Define o intervalo cujas bordas sero formatadas
Set rg = ActiveSheet.[A1:D10]
For k = 5 To 12
If k > 6 Then
With rg.Borders.Item(k)
'Define o estilo de linha
.LineStyle = xlContinuos
'Define a cor da linha
.ColorIndex = 0
'Define a espessura da linha
.Weight = xlThin
End With
End If
Next k
End Sub
possvel tambm utilizar um vetor que contm os valores correspondentes s de bordas que sero
coloridas:
Sub AplicandoBordas_V03()
'Define o intervalo cujas bordas sero formatadas
Set rg = ActiveSheet.[A1:D10]
With rg.Borders.Item(Bordas(k))
'Define o estilo de linha
.LineStyle = xlContinuos
'Define a cor da linha
.ColorIndex = 0
'Define a espessura da linha
.Weight = xlThin
End With
Next k
End Sub
Comentrios:
Observem que agora fica bem mais fcil modificar qualquer parmetro (intervalo, cor, espessura,
etc), bastando modificar uma nica linha de cdigo.
Deixo para vocs o desafio de alterar a macro para que sejam formatas apenas as bordas que
contornam o intervalo, na cor vermelha e com espessura grossa.
Abraos!