Имеем два листа Excel «лист1» и «лист2». На листе1 несколько ячеек (пусть будет F2, F3, F4) выделяются цветом. В зависимости от цвета ячейки на листе 2 этим цветом закрашивается выделенный диапазон строки (или можно даже вся строка) т.е 2,3,4 соотвественно. Попробовал просто решить «условным форматированием», но не получилось. Т.к. в VBA имею смутные базовые познания, то надеюсь на вашу помощь.
Всем заранее спасибо!
Всем доброго времени суток!
Проблема в следующем:
Имеем два листа Excel «лист1» и «лист2». На листе1 несколько ячеек (пусть будет F2, F3, F4) выделяются цветом. В зависимости от цвета ячейки на листе 2 этим цветом закрашивается выделенный диапазон строки (или можно даже вся строка) т.е 2,3,4 соотвественно. Попробовал просто решить «условным форматированием», но не получилось. Т.к. в VBA имею смутные базовые познания, то надеюсь на вашу помощь.
Sub iColor() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
[/vba]
[vba]
Код
Sub iColor() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
Kuzmich, спасибо большое! Еще один вопрос в дополнение: Хочу сделать так, чтобы макрос автоматически запускался при запуске файла. Добавил в Ваш код: [vba]
Код
Private Sub Workbook_Open() Sub iColor() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
[/vba] но не работает. Пишет "expected end sub"
Kuzmich, спасибо большое! Еще один вопрос в дополнение: Хочу сделать так, чтобы макрос автоматически запускался при запуске файла. Добавил в Ваш код: [vba]
Код
Private Sub Workbook_Open() Sub iColor() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
[/vba] но не работает. Пишет "expected end sub"blaskgeneral
Сообщение отредактировал blaskgeneral - Пятница, 01.10.2021, 08:27
Сейчас могу продемонстрировать только скрины с excel 2002 (слабый нетбук не тянет старшую версию). Если это для Вас не доказательство, то вечером попробую снять видео или скрины с нормальной машины.
Сейчас могу продемонстрировать только скрины с excel 2002 (слабый нетбук не тянет старшую версию). Если это для Вас не доказательство, то вечером попробую снять видео или скрины с нормальной машины.blaskgeneral
В вашем скриншоте ничего. У автора же окно проекта неактивно (лист горит серым), при том что работает он в книге. Впрочем, как такого добиться я уже понял.
В вашем скриншоте ничего. У автора же окно проекта неактивно (лист горит серым), при том что работает он в книге. Впрочем, как такого добиться я уже понял.mgt
Сообщение отредактировал mgt - Пятница, 01.10.2021, 13:08
чтобы макрос автоматически запускался при запуске файла.
В модуль эта книга [vba]
Код
Private Sub Workbook_Open() Dim i As Long Worksheets("Лист1").Activate With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
[/vba]
Цитата
чтобы макрос автоматически запускался при запуске файла.
В модуль эта книга [vba]
Код
Private Sub Workbook_Open() Dim i As Long Worksheets("Лист1").Activate With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
Private Sub Workbook_Open() Dim i As Long Worksheets("Лист1").Activate With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
Все работает, но только после перезапуска файла. этом, если в перезапущенном файле снова поменять цвет, то он не поменяется до перезапуска. Это так задумано? Или можно сделать чтобы менялось без перезапуска файла? Или каждый раз нужно запускать макрос?
Private Sub Workbook_Open() Dim i As Long Worksheets("Лист1").Activate With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
Все работает, но только после перезапуска файла. этом, если в перезапущенном файле снова поменять цвет, то он не поменяется до перезапуска. Это так задумано? Или можно сделать чтобы менялось без перезапуска файла? Или каждый раз нужно запускать макрос?
Private Sub Worksheet_Activate() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub
[/vba]
Цитата
но я не знаю как это сделать.
В модуль листа1 [vba]
Код
Private Sub Worksheet_Activate() Dim i As Long With Worksheets("Лист2") For i = 2 To 4 .Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex Next End With End Sub