Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
5 / 3 / 2
Регистрация: 17.02.2016
Сообщений: 344
1

Окрас фигур по значению в ячейке

29.11.2016, 19:28. Показов 4981. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, подскажите пожалуйста как окрасить фигуры в экселе по значению в ячейке, т.е. в примере на листе1 есть 4 фигуры созданные в экселе, надо чтоб каждая фигура окрашивалась по значению в ячейке на листе2 (Название столбца "окрас по значению в ячейке") согласно легенде, файл прилогаю

Наименование фигурыокрас по значению в ячейке  легенда
Полилиния 21  1 = желтое
Полилиния 52  2 = красное
Полилиния 61  3 = розовое
Полилиния 73  4 = белое
Вложения
Тип файла: xlsx фигура.xlsx (17.3 Кб, 62 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2016, 19:28
Ответы с готовыми решениями:

Как подсчитать сумму в итоговой ячейке по определенному значению если в ячейке есть буквы и цыфры
Добрый день, всем. Помогите пожалуйста, как можно посчитать сумму в итоговой ячейке по...

Поисковый запрос по значению в ячейке
Подскажите пожалуйста. Есть таблица, в листе 001 находятся данные. На лисле 002 находится...

Поиск в ячейке по определенному значению
Здравствуйте. помогите пожалуйста написать макрос, так как в этом не бум бум а только начинаю...

Скрытие/появление кнопки по значению в ячейке
Всем доброго времени суток, гуру макросов и кода! Есть недописанный код по появлению/скрытию...

5
5 / 3 / 2
Регистрация: 17.02.2016
Сообщений: 344
29.11.2016, 22:02  [ТС] 2
всем спасибо, написал сам, но было бы интересно посмотреть другой код м.б. он лучше чем мой реализовал через таргет, по цвету соседней ячейки в легенде, проще говоря если 1 то цвет берется из легенды (предварительно залив ячейки нужным цветом)
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.11.2016, 22:49 3
Лучший ответ Сообщение было отмечено АЛКС как решение

Решение

АЛКС,
Visual Basic
1
2
3
4
5
6
7
Sub Alks()
Dim cols(), c As Range
  cols = Array(, vbYellow, vbRed, &HCBC0FF, vbWhite)
  For Each c In Sheets("Лист2").Range("B7", Sheets("Лист2").Cells(Rows.Count, "B").End(xlUp))
    Sheets("Лист1").Shapes(c.Value).Fill.ForeColor.RGB = cols(c.Offset(, 1))
  Next
End Sub
2
5 / 3 / 2
Регистрация: 17.02.2016
Сообщений: 344
30.11.2016, 20:28  [ТС] 4
Казанский, отличный у Вас код, подскажите пожалуйста как можно оптимизировать мой код (фигур очень много для закраски) по пытался переделать на Ваш, не получилось, у Вас он отличный но цвета заранее фиксированные в коде, а мне бы чтоб цвета из ячейки можно было брать или если можно лучше Ваш код чуть чуть дополните цветами из ячеек

вот мой громоздкий код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x1 As Shape, x2 As Shape
Set x1 = Sheets("Лист2").Shapes("название фигуры1")
Set x2 = Sheets("Лист2").Shapes("название фигуры2")
Set x3 = Sheets("Лист2").Shapes("название фигуры3")
Set x3 = Sheets("Лист2").Shapes("название фигуры4")
 
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("c7")) Is Nothing Then
        Select Case Target.Value
            Case 1
                x1.Fill.ForeColor.RGB = Range("j2").Interior.Color
            Case 2
                x1.Fill.ForeColor.RGB = Range("j3").Interior.Color
            Case 3
                x1.Fill.ForeColor.RGB = Range("j4").Interior.Color
            Case 4
                x1.Fill.ForeColor.RGB = Range("j5").Interior.Color
            Case 5
                x1.Fill.ForeColor.RGB = Range("j6").Interior.Color
            Case 10
                x1.Fill.ForeColor.RGB = Range("j7").Interior.Color
        End Select
    End If
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("c8")) Is Nothing Then
        Select Case Target.Value
            Case 1
                x2.Fill.ForeColor.RGB = Range("j2").Interior.Color
            Case 2
                x2.Fill.ForeColor.RGB = Range("j3").Interior.Color
            Case 3
                x2.Fill.ForeColor.RGB = Range("j4").Interior.Color
            Case 4
                x2.Fill.ForeColor.RGB = Range("j5").Interior.Color
            Case 5
                x2.Fill.ForeColor.RGB = Range("j6").Interior.Color
            Case 10
                x2.Fill.ForeColor.RGB = Range("j7").Interior.Color
        End Select
    End If
    If Not Intersect(Target, Range("c9")) Is Nothing Then
        Select Case Target.Value
            Case 1
                x3.Fill.ForeColor.RGB = Range("j2").Interior.Color
            Case 2
                x3.Fill.ForeColor.RGB = Range("j3").Interior.Color
            Case 3
                x3.Fill.ForeColor.RGB = Range("j4").Interior.Color
            Case 4
                x3.Fill.ForeColor.RGB = Range("j5").Interior.Color
            Case 5
                x3.Fill.ForeColor.RGB = Range("j6").Interior.Color
            Case 10
                x3.Fill.ForeColor.RGB = Range("j7").Interior.Color
        End Select
    End If
    
End Sub
Добавлено через 17 минут
чуточку опечатался последний не x3 a x4
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
04.12.2016, 19:53 5
Лучший ответ Сообщение было отмечено АЛКС как решение

Решение

АЛКС, нет файла, соответствующего коду. Приспособил файл из первого поста, вот что получилось.
Можно менять сразу несколько ячеек из диапазона C7:C10 (автозаполнение, вставка).
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
  On Error Resume Next
  For Each c In Intersect(Target, Range("C7:C10"))
    Select Case c.Value
    Case 1 To 5
      Sheets("Лист2").Shapes(c.Offset(, -1).Value).Fill.ForeColor.RGB = Range("j1").Offset(c.Value).Interior.Color
    Case 10
      Sheets("Лист2").Shapes(c.Offset(, -1).Value).Fill.ForeColor.RGB = Range("j7").Interior.Color
    End Select
  Next
End Sub
Вложения
Тип файла: xls фигура.xls (53.5 Кб, 67 просмотров)
2
0 / 0 / 0
Регистрация: 07.03.2019
Сообщений: 11
23.04.2021, 09:09 6
Казанский,
Добрый день, скажите как приспособить ваш макрос под такой вариант, перечислены номера комнат. У каждой из комнат может быть один из статусов - сдана, не сдана, готовится к сдаче. Как применять к фигурам имена, а вместо цифр прописывать статус?
0
23.04.2021, 09:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2021, 09:09
Помогаю со студенческими работами здесь

Создать дубль строки по значению в ячейке
Добрый день, уважаемые знатоки Excel! Подскажите, пожалуйста, как можно реализовать данную...

Скрытие вкладки по значению формулы в ячейке
Добрый день, уважаемые форумчане. Помогите реализовать следующую задачу: Имеется вкладка Ввод...

Изменение строки формулы по значению в ячейке
Необходимо изменить формулу ссылки рисунка в зависимости от значения другой ячейки.Возможно ли...

Как добавить значение к значению в ячейке?
Здравствуйте я только начинаю изучать mysql подскажите пожалуйста вот есть такая конструкция: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru