Notifications
Clear all

Formatar bordas sem desfazer formatação existente

2 Posts
2 Usuários
0 Reactions
1,093 Visualizações
(@llrodrigo)
Posts: 151
Estimable Member
Topic starter
 

Olá, na minha planilha consegui por VBA vendo exemplos alterar a borda da linha e célula selecionada.
Como fazer para, alterar a borda da linha e coluna selecionada, somente até a intersecção da linha e coluna,
e não alterar o restante das bordas e formatações existentes na planilha?
Estou anexando um exemplo.Obrigado

Para formatar a linha e coluna

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Borders.LineStyle = xlLineStyleNone
Rows(Target.Row).BorderAround Weight:=xlMedium, ColorIndex:=3
Columns(Target.Column).BorderAround Weight:=xlMedium, ColorIndex:=3
End Sub
 
Postado : 26/06/2018 5:21 pm
(@boobymcgee)
Posts: 84
Trusted Member
 

Veja esse código e adapte ao seu projeto.

Sub AplicandoBordas_V02()
'Define o intervalo cujas bordas serão formatadas

    Set rg = ActiveSheet.Range(Cells(a, b), Cells(c, yyy)) 'ActiveSheet.[B35:J40]
    
    'Set rg = ActiveSheet.Range(Cells(a, b), Cells(c, lcolumn - 1)) 'ActiveSheet.[B35:J40]
    
    'MsgBox "É" & rg.Address
    
 'Define o loop para percorrer os item da coleção Borders: xlDiagonalDown 5; xlDiagonalUp 6; xlEdgeLeft 7;
    'xlEdgeTop 8; xlEdgeBottom 9;xlEdgeRight 10; xlInsideVertical 11; xlInsideHorizontal 12
    For L = 5 To 12 '10
    
'Serão formatados os itens de valor maior que 6 e menor que 11, excluindo desta forma xlDiagonalDown (5), xlDiagonalUp (6), xlInsideVertical (11) e xlInsideHorizontal (12)
    If L > 6 And L < 11 Then
        With rg.Borders.Item(L)
        
'Define o estilo de linha; xlContinuous = Linha contínua; xlDash = Linha tracejada; xlDashDot = Traços e pontos alternados;
    'xlDashDotDot = Traço seguido por dois pontos; xlDot =Linha pontilhada; xlDouble = Linha dupla; xlLineStyleNone = Sem linha; xlSlantDashDot = Traços inclinados
        .LineStyle = xlContinuos
        
'Define a cor da linha
        .ColorIndex = 0
        
'Define a espessura da linha: xlHairline = Fio; xlThin = Fina; xlMedium = Média; xlThick = Grossa
        .Weight = xlThick
        End With
        
'++++++++++++++

'Serão formatados os itens de valor maior que 10, ou seja, xlInsideVertical (11) e xlInsideHorizontal (12)
        ElseIf L > 10 Then
         With rg.Borders.Item(L)
        
'Define o estilo de linha; xlContinuous = Linha contínua; xlDash = Linha tracejada; xlDashDot = Traços e pontos alternados;
    'xlDashDotDot = Traço seguido por dois pontos; xlDot =Linha pontilhada; xlDouble = Linha dupla; xlLineStyleNone = Sem linha; xlSlantDashDot = Traços inclinados
        .LineStyle = xlContinuos
        
'Define a cor da linha
        .ColorIndex = 0 '11
        
'Define a espessura da linha: xlHairline = Fio; xlThin = Fina; xlMedium = Média; xlThick = Grossa
        .Weight = xlHairline 'xlThin
        End With
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++
    End If
Next L

End Sub
 
Postado : 27/06/2018 5:26 am