Здравствуйте! Буду очень признателен, если кто-нибудь поможет разобраться, как сделать, что бы при изменении цвета ячейки в таблице 1 менялся цвет у ячейки в таблице 2
Здравствуйте! Буду очень признателен, если кто-нибудь поможет разобраться, как сделать, что бы при изменении цвета ячейки в таблице 1 менялся цвет у ячейки в таблице 2Ambioz
Option Explicit Dim vValue Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Interior.Color = 65535 Then MsgBox "жёлтый" End Sub
[/vba] на скорую руку нарыл что-то такое
AlexM, [vba]
Код
Option Explicit Dim vValue Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Interior.Color = 65535 Then MsgBox "жёлтый" End Sub
Еще вариант. Срабатывает на событие Workbook_SheetSelectionChange В примере макроса не сделана проверка на изменение цвета только в столбце В Как работает меняете цвет в ячейке и переходите с нее на любую другую. Код в модуле Эта книга [vba]
Код
Public adr As String, ci1 As Long, ci2 As Long Private Sub Workbook_Open() adr = ActiveCell.Address ci1 = ActiveCell.Interior.ColorIndex End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) ci2 = Range(adr).Interior.ColorIndex If ci1 <> ci2 Then Range(adr).Offset(0, 5).Interior.ColorIndex = ci2 adr = Target.Address ci1 = Target.Interior.ColorIndex End Sub
[/vba]
Цитата (Ambioz)
Не совсем то, что надо
Еще вариант. Срабатывает на событие Workbook_SheetSelectionChange В примере макроса не сделана проверка на изменение цвета только в столбце В Как работает меняете цвет в ячейке и переходите с нее на любую другую. Код в модуле Эта книга [vba]
Код
Public adr As String, ci1 As Long, ci2 As Long Private Sub Workbook_Open() adr = ActiveCell.Address ci1 = ActiveCell.Interior.ColorIndex End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) ci2 = Range(adr).Interior.ColorIndex If ci1 <> ci2 Then Range(adr).Offset(0, 5).Interior.ColorIndex = ci2 adr = Target.Address ci1 = Target.Interior.ColorIndex End Sub
А можно как-нибудь функцию CellColor от PLEX применить?
Цитата (AlexM)
Вы можете рассказать, по какому принципу вы окрашиваете ячейки в первой таблице. От чего зависит окрашивать или нет?
Ячейки ежедневно окрашиваются вручную, это зависит от внешних факторов, т.е. не известно, какие ячейки окрасятся завтра, послезавтра Подробно:
Имеются две одинаковые таблицы 10 столбцов 2000 строк. В каждом столбце отмечается определенный вид работы. В первой ежедневно отмечается выполнение работы - закрашивается ячейка зеленым цветом и ставится дата выполнения. В другой таблице уже стоят даты (запланированные). Необходимо, что бы во второй таблице заливались цветом выполненные работы - ячейки из первой таблицы.
А можно как-нибудь функцию CellColor от PLEX применить?
Цитата (AlexM)
Вы можете рассказать, по какому принципу вы окрашиваете ячейки в первой таблице. От чего зависит окрашивать или нет?
Ячейки ежедневно окрашиваются вручную, это зависит от внешних факторов, т.е. не известно, какие ячейки окрасятся завтра, послезавтра Подробно:
Имеются две одинаковые таблицы 10 столбцов 2000 строк. В каждом столбце отмечается определенный вид работы. В первой ежедневно отмечается выполнение работы - закрашивается ячейка зеленым цветом и ставится дата выполнения. В другой таблице уже стоят даты (запланированные). Необходимо, что бы во второй таблице заливались цветом выполненные работы - ячейки из первой таблицы.
Еще вариант. Срабатывает на событие Workbook_SheetSelectionChange В примере макроса не сделана проверка на изменение цвета только в столбце В Как работает меняете цвет в ячейке и переходите с нее на любую другую. Код в модуле Эта книга
Public adr As String, ci1 As Long, ci2 As Long Private Sub Workbook_Open() adr = ActiveCell.Address ci1 = ActiveCell.Interior.ColorIndex End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) ci2 = Range(adr).Interior.ColorIndex If ci1 <> ci2 Then Range(adr).Offset(0, 5).Interior.ColorIndex = ci2 adr = Target.Address ci1 = Target.Interior.ColorIndex End Sub К сообщению приложен файл: 5175750_new1.xls(35Kb)
Да, что-то похожее. А где прописан столбец В? Как сделать проверку цвета для нескольких столбцов (B, C, D, E) ?
Цитата (AlexM)
Еще вариант. Срабатывает на событие Workbook_SheetSelectionChange В примере макроса не сделана проверка на изменение цвета только в столбце В Как работает меняете цвет в ячейке и переходите с нее на любую другую. Код в модуле Эта книга
Public adr As String, ci1 As Long, ci2 As Long Private Sub Workbook_Open() adr = ActiveCell.Address ci1 = ActiveCell.Interior.ColorIndex End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) ci2 = Range(adr).Interior.ColorIndex If ci1 <> ci2 Then Range(adr).Offset(0, 5).Interior.ColorIndex = ci2 adr = Target.Address ci1 = Target.Interior.ColorIndex End Sub К сообщению приложен файл: 5175750_new1.xls(35Kb)
Да, что-то похожее. А где прописан столбец В? Как сделать проверку цвета для нескольких столбцов (B, C, D, E) ?Ambioz
Обратите внимание. Когда вы изменяете значение в ячейке и нажимаете Enter только тогда происходит изменение в этой ячейке, а активной становится другая ячейка. При изменении цвета, нажатия Enter не требуется, эта же ячейка остается активной. Получается что на листе ничего не произошло. А раз нет события, то запуск макроса невозможен.
Цитата (Ambioz)
CellColor от PLEX применить
Уверен, что там то же самое.
Цитата (Ambioz)
А где прописан столбец В
Нигде не прописан. Если изменить цвет в ячейке, то после перехода окрасится ячейка на 5 столбцов правее.
PS. Возможно у вас не было бы вопросов, если пример файла был по правилам. Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк. - Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу. - Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные.
Обратите внимание. Когда вы изменяете значение в ячейке и нажимаете Enter только тогда происходит изменение в этой ячейке, а активной становится другая ячейка. При изменении цвета, нажатия Enter не требуется, эта же ячейка остается активной. Получается что на листе ничего не произошло. А раз нет события, то запуск макроса невозможен.
Цитата (Ambioz)
CellColor от PLEX применить
Уверен, что там то же самое.
Цитата (Ambioz)
А где прописан столбец В
Нигде не прописан. Если изменить цвет в ячейке, то после перехода окрасится ячейка на 5 столбцов правее.
PS. Возможно у вас не было бы вопросов, если пример файла был по правилам. Обычно, чтобы понять и помочь - достаточно таблицы на 10-20 строк. - Но при этом старайтесь сохранить структуру, расположение таблиц, имена листов - аналогично оригиналу. - Если файл содержит конфиденциальную информацию - просто замените Ваши данные на нейтральные.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Среда, 06.03.2013, 12:17
закрашивается ячейка зеленым цветом и ставится дата выполнения
Т.е. если дата проставлена, то ячейка должна быть зеленой. Так? Если так, то ввод даты и есть событие, на которое можно запускать макрос. Этот макрос окрасит и эту ячейку в зеленый цвет и другую. Но скорее всего подойдет условное форматирование. Нужен реальный пример с описанием, что делаем и что надо получить.
Цитата (Ambioz)
закрашивается ячейка зеленым цветом и ставится дата выполнения
Т.е. если дата проставлена, то ячейка должна быть зеленой. Так? Если так, то ввод даты и есть событие, на которое можно запускать макрос. Этот макрос окрасит и эту ячейку в зеленый цвет и другую. Но скорее всего подойдет условное форматирование. Нужен реальный пример с описанием, что делаем и что надо получить.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.