2016-11-29 8 views
1

Я не эксперт в Excel или VBA, но я делаю все возможное. У меня есть файл Excel, где ячейка D10 является пустой или пустой.Excel: изменение цвета текста в ячейках на основе ввода в одной ячейке (включая обновление)

На основе ячейки D10, пустой или пустой, я хочу отформатировать цвет текста и/или заполнить ячейки в других ячейках. Ячейка D10 может изменяться между пустым и не пустым, и цвета должны соответственно меняться.

Сначала я пытался сделать это без использования VBA: Conditonal Formatting

Это не работает, как я надеялся. Изменения не применимы ко всем ячейкам в выборке, и смена ячейки D10 с пустого на не пустой и обратно на бланк не сработала.

Затем я попробовал VBA, который я действительно не знаю, как это сделать. Может ли кто-нибудь дать мне руку помощи?

Sub colourChange() 

If Range("D10") = ISBLANK Then 
    Range("C18:I20").Font.Color = RGB(256, 256, 256) 
    Range("C32:I33").Font.Color = RGB(256, 256, 256) 
End If 

If Range("D10") = Not (ISBLANK) Then 
    Range("C18:I20").Font.Color = RGB(0, 0, 0) 
    Range("C32:I33").Font.Color = RGB(0, 0, 0) 
End If 

End Sub 

Как сделать этот модуль постоянно включенным?

+0

попробовать код в мой ответ ниже для решения VBA –

+0

я не уверен, если я получил это право. См. Ссылку на изображение ниже. Я сделал что-то неправильно? Как я уже говорил ранее, я не очень хорошо разбираюсь в VBA. [скриншот] (https://s17.postimg.org/azl3ukpin/vba.png) – ROLF

ответ

1

Выберите D10 клеток и лента перейти к формулам> Определить имя и дать ячейку D10 имени (., Например, я буду использовать myVal)

Для первой формулы условного форматирования правило, имеет:

=myVal="" 

и ваш второй:

=myVal<>"" 

Это будет проверять, есть ли какое-либо значение в D10, и применить форматирование правильно.

Я обновил этот ответ, поскольку Excel не полностью сотрудничал с первоначальным решением, которое я дал, но я считаю, что это должно решить его!

+0

Спасибо :). Однако это не работает для всего выбора: «= $ C $ 18: $ I $ 20; $ C $ 32: $ I $ 33". При изменении D10 изменяется только одна ячейка (C18). Остальные имеют белый текст, независимо от D10. – ROLF

+0

Измените запятую на запятую, если вы хотите добавить дополнительный диапазон. – Clusks

+0

Я думаю, что моя версия Excel использует запятую вместо запятой. По крайней мере, это то, что я должен использовать в формулах (например, = IF (A1 = A2; «ОК», «Не в порядке»). – ROLF

0

Если вы хотите использовать VBA, вам необходимо переместить код на Worksheet_Change событие соответствующего листа.

Затем вам нужно проверить, является ли диапазон Target ячейкой D10, а затем проверить, как изменить Font.Color соответственно.

Примечание: вы можете установить несколько диапазонов в одной строке с помощью Union, как я применил в своем коде ниже.

Код

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim WatchRange     As Range 

' set watch range to cell D10 
Set WatchRange = Range("D10") 

' if modifed cell is D10 >> enter the rest of the code 
If Not Intersect(Target, WatchRange) Is Nothing Then 
    If IsEmpty(Range("D10")) Or Range("D10").Value = "" Then 
     Union(Range("C18:I20"), Range("C32:I33")).Font.Color = RGB(256, 256, 256) 
    Else 
     Union(Range("C18:I20"), Range("C32:I33")).Font.Color = RGB(0, 0, 0) 
    End If 
End If 

End Sub