Изменить цвет существующих нерегулярных границ - Excel

1892
Ludo

Я хотел бы изменить существующий цвет границ нескольких ячеек - некоторые из них имеют только границу вверху / слева или вообще не имеют границ в Excel.

Есть ли стандартная опция для этого, или это можно сделать с помощью макроса?

РЕДАКТИРОВАТЬ:

Видимо, мое описание не было достаточно ясным. Я пытаюсь изменить цвет границы (уже существующих ячеек) календаря. Так что это 12 вкладок и много строк.

Как вы можете видеть на изображении ниже, не все ячейки имеют одинаковую границу (стиль), например. границы, окружающие всю ячейку (у некоторых есть, у некоторых ячеек есть только линия сбоку сверху / снизу, а у некоторых вообще нет). Я пытаюсь изменить цвет их всех без необходимости перерисовывать все линии. Я хотел бы «обновить» текущий цвет.

example of borders

1
[Изменение цвета границы ячейки] (http://excelribbon.tips.net/T008773_Changing_the_Color_of_a_Cell_Border.html) является первым результатом, возвращаемым при поиске «Excel 2013 изменить цвет границы ячейки» DavidPostill 9 лет назад 0

1 ответ на вопрос

3
paul bica

You can use VBA code like this - it will affect current selection (if the selection is a Range of cells

Option Explicit Public Sub setBorders() Dim cel As Range, clr1 As Long, clr2 As Long clr1 = vbWhite 'if cell border color is different than white, and has LineStyle clr2 = vbRed 'change its color to vbRed If TypeOf Selection Is Range Then For Each cel In Selection 'select your Range With cel With .Borders(xlEdgeLeft) If .Color <> clr1 And .LineStyle <> xlNone Then .Color = clr2 End With With .Borders(xlEdgeTop) If .Color <> clr1 And .LineStyle <> xlNone Then .Color = clr2 End With With .Borders(xlEdgeBottom) If .Color <> clr1 And .LineStyle <> xlNone Then .Color = clr2 End With With .Borders(xlEdgeRight) If .Color <> clr1 And .LineStyle <> xlNone Then .Color = clr2 End With End With Next End If End Sub 

border colors


To use it open the VBA editor - Alt + F11, and paste the code in a standard VBA module

Спасибо за вашу реакцию, однако я стараюсь сделать что-то более сложное. Я знаю, как гуглить;) Я исправил свой первоначальный вопрос, добавив больше информации. Ludo 9 лет назад 0
Я обновил ответ paul bica 9 лет назад 0
Хорошо, спасибо! Это работает, но есть ли способ сделать его «глобальным» макросом. Вызов этого активного листа вместо Sheet1 Ludo 9 лет назад 0
Я обновил его, чтобы он работал на выбранном в данный момент диапазоне ячеек (для ActiveSheet) paul bica 9 лет назад 0

Похожие вопросы