VBA Удалить границу вокруг диапазона - PullRequest
0 голосов
/ 14 июля 2020

хорошо, так что ... мне нужно очистить старую границу диапазона, прежде чем применять новую с изменением, я безуспешно пытался. это должно быть выполнено до 'Установить новую продолжительность в ячейке хранения

Как я могу этого добиться?

If Cells(9, Target.Column).Value = "Dur" Then 'Duration Change and Check for proper datbase coluumn
                
                'Update Colors
                
                'Clears Old Color
                
                If Range("A8").Value <> Empty Then Range(Cells(Target.Row, Target.Column), Cells(Target.Row + Range("A8").Value - 1, Target.Column + 3)).Interior.Color = 16777215 'Clear Previos Colors Based on Previous Duration (if any)
                             
                'Set New Duration in holding cell
                Range("A7").Value = Target.Value
                
                'Sets New color
                If Target.Value <> Empty Then Range(Cells(Target.Row, Target.Column), Cells(Target.Row + Range("A8").Value - 1, Target.Column + 3)).Interior.Color = Range("FillColor").Interior.Color  'Add New Color
                
                'Sets Border around
                If Target.Value <> Empty Then Range(Cells(Target.Row, Target.Column), Cells(Target.Row + Range("A8").Value - 1, Target.Column + 3)).BorderAround , ColorIndex:=xlAutomatic, Weight:=xlThin

End If

1 Ответ

0 голосов
/ 14 июля 2020

Это удалит все границы из диапазона A1.

With Range("A1")
    .Borders(xlDiagonalDown).LineStyle = xlNone
    .Borders(xlDiagonalUp).LineStyle = xlNone
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
End With

Источник: Macro Recorder. Согласно комментарию GSerg и документации, было бы лучше заменить xlNone на xlLineStyleNone (численно они совпадают -4142, поэтому оба будут работать).

Хотя документация метода Range.BorderAround говорит:

Чтобы очистить границу, вы должны установить для свойства LineStyle значение xlLineStyleNone для всех ячеек в диапазоне.

бывает, что явно из-за бага Range("A1").BorderAround LineStyle:=xlLineStyleNone не работает. Таким образом, вам придется сделать это с первым блоком кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...