Здравствуйте. На "Лист2" есть таблица со значениями и цветами, на "Лист1" при вводе значения в колонку, оно должно сравниваться со значениями в таблице на "Лист2" и при совпадении, закраситься в цвет данного значения указанного на "Лист2". Прикладываю файл-пример с макросом. Подскажите, что нужно поправить в макросе для сравнения значений с диапазоном? У меня закрашивается при указании значения и адреса ячейки с цветом в макросе? Спасибо.
Здравствуйте. На "Лист2" есть таблица со значениями и цветами, на "Лист1" при вводе значения в колонку, оно должно сравниваться со значениями в таблице на "Лист2" и при совпадении, закраситься в цвет данного значения указанного на "Лист2". Прикладываю файл-пример с макросом. Подскажите, что нужно поправить в макросе для сравнения значений с диапазоном? У меня закрашивается при указании значения и адреса ячейки с цветом в макросе? Спасибо.Exsodus
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C1:C100")) Is Nothing Then On Error Resume Next Set u = Worksheets(2).Range("b2:f12").Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole) v = u.Interior.Color w = u.Font.Color Range(Target, Target.Offset(0, 2)).Interior.Color = v Range(Target, Target.Offset(0, 2)).Font.Color = w If w = "" Then Range(Target, Target.Offset(0, 2)).Interior.Pattern = xlNone Range(Target, Target.Offset(0, 2)).Font.ColorIndex = xlAutomatic End If End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C1:C100")) Is Nothing Then On Error Resume Next Set u = Worksheets(2).Range("b2:f12").Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole) v = u.Interior.Color w = u.Font.Color Range(Target, Target.Offset(0, 2)).Interior.Color = v Range(Target, Target.Offset(0, 2)).Font.Color = w If w = "" Then Range(Target, Target.Offset(0, 2)).Interior.Pattern = xlNone Range(Target, Target.Offset(0, 2)).Font.ColorIndex = xlAutomatic End If End If End Sub
Добрый вечер. Нужна помощь в переделке макроса. В ячейки столбца "С" будут копироваться формулой значения из ячеек столбца допустим "Н". Соответственно дальше я ввожу новое значение в столбец "Н", формула его копирует в столбец "С", дальше все как было, макрос его сравнивает с таблицей на листе2 и закрашивает соответствующим цветом. Я пробовал делать ссылку формулой из столбца "С" на столбец "Н", при вводе чиста в столбец "Н", в столбце "С" оно появляется, но ничего не закрашивается. Закрашивается только после двойного щелчка мышкой на ячейке со значением. Пробовал менять макрос с "Change" на "SelectionChange", закрашивание происходит только если выделить ячейку со значением в столбце "С". На форумах прочитал, что можно сделать макрос "Calculate", но у меня не получилось. Если не сложно, подскажите пожалуйста, как его переделать. Спасибо. Мне Nic70y помог и скинул новый вариант макроса. Но с ним у меня получилось не совсем так, как хотелось бы, может я что-то не точно объяснил. Файл пример работы новой версии макроса прикладываю.
Добрый вечер. Нужна помощь в переделке макроса. В ячейки столбца "С" будут копироваться формулой значения из ячеек столбца допустим "Н". Соответственно дальше я ввожу новое значение в столбец "Н", формула его копирует в столбец "С", дальше все как было, макрос его сравнивает с таблицей на листе2 и закрашивает соответствующим цветом. Я пробовал делать ссылку формулой из столбца "С" на столбец "Н", при вводе чиста в столбец "Н", в столбце "С" оно появляется, но ничего не закрашивается. Закрашивается только после двойного щелчка мышкой на ячейке со значением. Пробовал менять макрос с "Change" на "SelectionChange", закрашивание происходит только если выделить ячейку со значением в столбце "С". На форумах прочитал, что можно сделать макрос "Calculate", но у меня не получилось. Если не сложно, подскажите пожалуйста, как его переделать. Спасибо. Мне Nic70y помог и скинул новый вариант макроса. Но с ним у меня получилось не совсем так, как хотелось бы, может я что-то не точно объяснил. Файл пример работы новой версии макроса прикладываю. Exsodus
Exsodus, добрый день. Как понял, вариант Private Sub Worksheet_Change(ByVal Target As Range) в прилагаемом файле. Закрашивание происходит при вводе нового/изменении старого значения в столбце H.
Exsodus, добрый день. Как понял, вариант Private Sub Worksheet_Change(ByVal Target As Range) в прилагаемом файле. Закрашивание происходит при вводе нового/изменении старого значения в столбце H.NikitaDvorets
Exsodus, Попробуйте такой вариант. Подход немного другой, макрос более быстрый. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("H1:H18")) Is Nothing Or Target.Count <> 1 Then Exit Sub Dim Dk As Object, Cl As Range Range("C1:E18").Interior.Color = 16777215 Set Dk = CreateObject("Scripting.Dictionary") With Worksheets("Лист2") For Each Cl In .Range("B2:F12") Dk.Add Cl.Value, Cl.Interior.Color Next End With For Each Cl In Range("H1:H18") Cl.Offset(, -5) = Cl If Dk.Exists(Cl.Value) Then Cl.Offset(, -5).Resize(, 3).Interior.Color = Dk(Cl.Value) Next End Sub
[/vba]
Exsodus, Попробуйте такой вариант. Подход немного другой, макрос более быстрый. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("H1:H18")) Is Nothing Or Target.Count <> 1 Then Exit Sub Dim Dk As Object, Cl As Range Range("C1:E18").Interior.Color = 16777215 Set Dk = CreateObject("Scripting.Dictionary") With Worksheets("Лист2") For Each Cl In .Range("B2:F12") Dk.Add Cl.Value, Cl.Interior.Color Next End With For Each Cl In Range("H1:H18") Cl.Offset(, -5) = Cl If Dk.Exists(Cl.Value) Then Cl.Offset(, -5).Resize(, 3).Interior.Color = Dk(Cl.Value) Next End Sub