Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заливка цветом ячеек на разных листах - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заливка цветом ячеек на разных листах (Макросы/Sub)
Заливка цветом ячеек на разных листах
blaskgeneral Дата: Четверг, 30.09.2021, 20:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Всем доброго времени суток!

Проблема в следующем:

Имеем два листа Excel «лист1» и «лист2». На листе1 несколько ячеек (пусть будет F2, F3, F4) выделяются цветом. В зависимости от цвета ячейки на листе 2 этим цветом закрашивается выделенный диапазон строки (или можно даже вся строка) т.е 2,3,4 соотвественно.
Попробовал просто решить «условным форматированием», но не получилось.
Т.к. в VBA имею смутные базовые познания, то надеюсь на вашу помощь.

Всем заранее спасибо!
 
Ответить
СообщениеВсем доброго времени суток!

Проблема в следующем:

Имеем два листа Excel «лист1» и «лист2». На листе1 несколько ячеек (пусть будет F2, F3, F4) выделяются цветом. В зависимости от цвета ячейки на листе 2 этим цветом закрашивается выделенный диапазон строки (или можно даже вся строка) т.е 2,3,4 соотвественно.
Попробовал просто решить «условным форматированием», но не получилось.
Т.к. в VBA имею смутные базовые познания, то надеюсь на вашу помощь.

Всем заранее спасибо!

Автор - blaskgeneral
Дата добавления - 30.09.2021 в 20:43
Kuzmich Дата: Четверг, 30.09.2021, 21:07 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 155 ±
Замечаний: 0% ±

Excel 2003
[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
[/vba]

Автор - Kuzmich
Дата добавления - 30.09.2021 в 21:07
blaskgeneral Дата: Пятница, 01.10.2021, 08:10 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

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 - Пятница, 01.10.2021, 08:27
 
Ответить
Сообщение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
Дата добавления - 01.10.2021 в 08:10
Erjoma1981 Дата: Пятница, 01.10.2021, 08:29 | Сообщение № 4
Группа: Проверенные
Ранг: Участник
Сообщений: 66
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010, 2019
Уберите строчку
Sub iColor()
 
Ответить
СообщениеУберите строчку
Sub iColor()

Автор - Erjoma1981
Дата добавления - 01.10.2021 в 08:29
blaskgeneral Дата: Пятница, 01.10.2021, 09:57 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Уберите строчку

Если убрать эту строчку, то сообщение об ошибке исчезает, но макрос не работает.
 
Ответить
Сообщение
Уберите строчку

Если убрать эту строчку, то сообщение об ошибке исчезает, но макрос не работает.

Автор - blaskgeneral
Дата добавления - 01.10.2021 в 09:57
RAN Дата: Пятница, 01.10.2021, 10:09 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
но макрос не работает.

Чем докажите?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
но макрос не работает.

Чем докажите?

Автор - RAN
Дата добавления - 01.10.2021 в 10:09
blaskgeneral Дата: Пятница, 01.10.2021, 10:34 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Чем докажите?

Сейчас могу продемонстрировать только скрины с excel 2002 (слабый нетбук не тянет старшую версию).
Если это для Вас не доказательство, то вечером попробую снять видео или скрины с нормальной машины.
К сообщению приложен файл: 5879341.jpg (68.4 Kb) · 5342526.jpg (68.5 Kb)


Сообщение отредактировал blaskgeneral - Пятница, 01.10.2021, 10:35
 
Ответить
Сообщение
Чем докажите?

Сейчас могу продемонстрировать только скрины с excel 2002 (слабый нетбук не тянет старшую версию).
Если это для Вас не доказательство, то вечером попробую снять видео или скрины с нормальной машины.

Автор - blaskgeneral
Дата добавления - 01.10.2021 в 10:34
blaskgeneral Дата: Пятница, 01.10.2021, 10:35 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

И вот 3-й файл:
К сообщению приложен файл: 7769647.jpg (71.2 Kb)
 
Ответить
СообщениеИ вот 3-й файл:

Автор - blaskgeneral
Дата добавления - 01.10.2021 в 10:35
mgt Дата: Пятница, 01.10.2021, 10:58 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 0% ±

Excel 2010
Судя по третьему скриншоту макрос у вас лежит в Лист2. Переместите его без изменений в Этакнига.
 
Ответить
СообщениеСудя по третьему скриншоту макрос у вас лежит в Лист2. Переместите его без изменений в Этакнига.

Автор - mgt
Дата добавления - 01.10.2021 в 10:58
Nic70y Дата: Пятница, 01.10.2021, 11:05 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8704
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
Судя по третьему скриншоту
макрос лежит в ЭтаКнига


ЮMoney 41001841029809
 
Ответить
Сообщение
Судя по третьему скриншоту
макрос лежит в ЭтаКнига

Автор - Nic70y
Дата добавления - 01.10.2021 в 11:05
Erjoma1981 Дата: Пятница, 01.10.2021, 11:19 | Сообщение № 11
Группа: Проверенные
Ранг: Участник
Сообщений: 66
Репутация: 25 ±
Замечаний: 0% ±

Excel 2010, 2019
Дело в этой строчке
.Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex

Если книгу сохраняли и был активен лист 2, то откроется и считается лист2.
Измените ее на
[vba]
Код
.Range("A" & i & ":H" & i).Interior.ColorIndex = Worksheets("Лист1").Cells(i, "F").Interior.ColorIndex
[/vba]


Сообщение отредактировал Erjoma1981 - Пятница, 01.10.2021, 11:20
 
Ответить
СообщениеДело в этой строчке
.Range("A" & i & ":H" & i).Interior.ColorIndex = Cells(i, "F").Interior.ColorIndex

Если книгу сохраняли и был активен лист 2, то откроется и считается лист2.
Измените ее на
[vba]
Код
.Range("A" & i & ":H" & i).Interior.ColorIndex = Worksheets("Лист1").Cells(i, "F").Interior.ColorIndex
[/vba]

Автор - Erjoma1981
Дата добавления - 01.10.2021 в 11:19
mgt Дата: Пятница, 01.10.2021, 11:28 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 0% ±

Excel 2010
Workbook в заголовке при активном втором листе в меню Проекта? >_<
 
Ответить
СообщениеWorkbook в заголовке при активном втором листе в меню Проекта? >_<

Автор - mgt
Дата добавления - 01.10.2021 в 11:28
Kuzmich Дата: Пятница, 01.10.2021, 11:32 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 155 ±
Замечаний: 0% ±

Excel 2003
Может лучше повесить выполнение макроса на событие активации листа1
 
Ответить
СообщениеМожет лучше повесить выполнение макроса на событие активации листа1

Автор - Kuzmich
Дата добавления - 01.10.2021 в 11:32
Nic70y Дата: Пятница, 01.10.2021, 11:59 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 8704
Репутация: 2258 ±
Замечаний: 0% ±

Excel 2010
mgt, а что Вас смущает?
К сообщению приложен файл: 6890868.png (70.1 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 01.10.2021, 12:00
 
Ответить
Сообщениеmgt, а что Вас смущает?

Автор - Nic70y
Дата добавления - 01.10.2021 в 11:59
mgt Дата: Пятница, 01.10.2021, 13:08 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 24 ±
Замечаний: 0% ±

Excel 2010
В вашем скриншоте ничего. У автора же окно проекта неактивно (лист горит серым), при том что работает он в книге. Впрочем, как такого добиться я уже понял.


Сообщение отредактировал mgt - Пятница, 01.10.2021, 13:08
 
Ответить
СообщениеВ вашем скриншоте ничего. У автора же окно проекта неактивно (лист горит серым), при том что работает он в книге. Впрочем, как такого добиться я уже понял.

Автор - mgt
Дата добавления - 01.10.2021 в 13:08
RAN Дата: Пятница, 01.10.2021, 15:30 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Впрочем, как такого добиться я уже понял.

А поделиться?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Впрочем, как такого добиться я уже понял.

А поделиться?

Автор - RAN
Дата добавления - 01.10.2021 в 15:30
Kuzmich Дата: Пятница, 01.10.2021, 16:33 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 155 ±
Замечаний: 0% ±

Excel 2003
Цитата
чтобы макрос автоматически запускался при запуске файла.

В модуль эта книга
[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
[/vba]

Автор - Kuzmich
Дата добавления - 01.10.2021 в 16:33
blaskgeneral Дата: Пятница, 01.10.2021, 17:50 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Если книгу сохраняли и был активен лист 2, то откроется и считается лист2.
Измените ее на

.Range("A" & i & ":H" & i).Interior.ColorIndex = Worksheets("Лист1").Cells(i, "F").Interior.ColorIndex


Изменяю. Снова получаю ошибку:
К сообщению приложен файл: 9410279.jpg (35.5 Kb)
 
Ответить
Сообщение
Если книгу сохраняли и был активен лист 2, то откроется и считается лист2.
Измените ее на

.Range("A" & i & ":H" & i).Interior.ColorIndex = Worksheets("Лист1").Cells(i, "F").Interior.ColorIndex


Изменяю. Снова получаю ошибку:

Автор - blaskgeneral
Дата добавления - 01.10.2021 в 17:50
blaskgeneral Дата: Пятница, 01.10.2021, 17:53 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

В модуль эта книга

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


Все работает, но только после перезапуска файла. этом, если в перезапущенном файле снова поменять цвет, то он не поменяется до перезапуска.
Это так задумано? Или можно сделать чтобы менялось без перезапуска файла? Или каждый раз нужно запускать макрос?

Может лучше повесить выполнение макроса на событие активации листа1

Если так удобнее и проще, то почему нет, но я не знаю как это сделать.


Сообщение отредактировал blaskgeneral - Пятница, 01.10.2021, 18:00
 
Ответить
Сообщение
В модуль эта книга

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


Все работает, но только после перезапуска файла. этом, если в перезапущенном файле снова поменять цвет, то он не поменяется до перезапуска.
Это так задумано? Или можно сделать чтобы менялось без перезапуска файла? Или каждый раз нужно запускать макрос?

Может лучше повесить выполнение макроса на событие активации листа1

Если так удобнее и проще, то почему нет, но я не знаю как это сделать.

Автор - blaskgeneral
Дата добавления - 01.10.2021 в 17:53
Kuzmich Дата: Пятница, 01.10.2021, 18:02 | Сообщение № 20
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 155 ±
Замечаний: 0% ±

Excel 2003
Цитата
но я не знаю как это сделать.

В модуль листа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
[/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
[/vba]

Автор - Kuzmich
Дата добавления - 01.10.2021 в 18:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заливка цветом ячеек на разных листах (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!