2013-03-30 4 views
0

У меня есть очень простой код макроса, который показывает цвет цветового кода, который записан внутри клетки:Excel 2007 - условное форматирование - как превратить цветовые коды в цвета?

Sub ShowColour() 
    ColCod = Selection() 
    With Selection.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = ColCod 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
End Sub 

Я теперь ищет какой-то способ для изменения содержимого ячейки в другой цветовой код и немедленно показать его цвет. Я экспериментировал с условным формированием, но, похоже, я могу выбирать только из заранее определенных форматов. Может ли кто-нибудь дать мне подсказку?

+1

Цвета, установленные условным форматированием, не видны в Range.Interior.Color. Вы хотите, чтобы ячейка меняла цвет, когда пользователь вводит в него цветовой код? Вы можете использовать событие OnChange для запуска вашей подпрограммы. – grahamj42

+0

Да, я хочу, чтобы ячейка меняла цвет, когда пользователь вводит в него код _new_ color, и это работает уже отлично. _ Кроме того, я хочу видеть цвет исходного цветового кода, чтобы пользователь мог решить, какие ячейки изменить, вставив новый цветовой код. – Marcel

ответ

1

Если вы мне правильно поняли, вы должны добавить этот код в соответствующий модуль листа, например, с именем Sheet1 (Sheet1) '(не в стандартный модуль, например Module1). В результате этот код запустит соответствующее событие для вас.

Private Sub Worksheet_Change(ByVal Target As Range) 

On Error GoTo ErrorHandler 
With Target.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .Color = Target.Value 
    .TintAndShade = 0 
    .PatternTintAndShade = 0 
End With 

Exit Sub 
ErrorHandler: 
    MsgBox "Color number rather doesn't exists" 
End Sub 

Я сохранил ваш базовый код внутри, поскольку вам было бы легче.

+0

Это работает блестяще. Большое спасибо! Еще одна вещь, которую я еще не смог решить: я хотел бы видеть не только цвета в тех полях, которые я редактировал, но и оригинал перед редактированием, а ваш код запускается только при внесении изменений. В основном я ищу поведение, аналогичное поведению условного форматирования. Ячейка показывает цвет, и когда содержимое изменяется, цвет меняется. – Marcel

+0

«Я бы хотел увидеть не только цвета в тех полях, которые я редактировал, но и оригинал перед редактированием» ... как? Каким путем?? Я не понимаю ... Ты что-то пробовал? –

+0

Что мне удалось сделать до сих пор, так это использовать вашу идею для написания кода, который обрабатывает изменения в разных колонках и для различного содержимого ячейки точно так же, как я надеялся, когда бы я ни делал изменения в любой ячейке. То, что я еще не нашел, - это способ показать цветовые коды в столбцах цветового кода, прежде чем пользователь начнет редактировать содержимое ячейки. Файл создается макросом WinWord. Я хочу, чтобы пользователь открыл его, посмотрел на цветные ячейки в цветовых кодах, содержащих столбец, и решил: «В этой конкретной ячейке позвольте мне изменить цветовой код на другой». – Marcel