Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 09:33   #1
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию Заливка автофигуры и значения ячеек

Помогите, плиз!
В приложенном файле Excel есть автофигура и значения в ячейках A1 от 0 до 5 и B1 от 1 до 3.

Необходимо:
1). Чтобы автофигура изменяла свою степень прозрачности заливки исходя из того значения, которое поставлено в ячейку.
Степень прозрачности должна соответствовать следующим значениям
0 - 100% прозрачности;
1 - 80%;
2 - 60%;
3 - 40%;
4 - 20%;
5 - 0%.

2). Чтобы автофигура поменяла цвет заливки исходя из значения в ячейке B1 в следующем соответствии:
1 - красный
2 - синий
3 - зеленый.

Немного ниже в файле представлен пример аналогичных фигуры, но с разной степенью прозрачности и вариантов цвета
Вложения
Тип файла: rar Пример по заливке.rar (19.6 Кб, 33 просмотров)
Иванов_ДМ вне форума Ответить с цитированием
Старый 22.09.2009, 09:59   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Пример по заливке_2.rar (25.3 Кб, 49 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 22.09.2009 в 10:14.
SAS888 вне форума Ответить с цитированием
Старый 22.09.2009, 10:09   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот ещё вариант:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case [a1].Address
            If [a1] Like "#" And Val([a1]) < 6 Then
                Shapes("фигура").Fill.Transparency = (5 - [a1]) * 0.2
            End If
        Case [b1].Address
            If [b1] Like "#" And Val([b1]) < 4 And Val([b1]) > 0 Then
                Shapes("фигура").Fill.ForeColor.SchemeColor = Choose([b1] + 1, 55, 2, 48, 3)
            End If
    End Select
End Sub


Цвета можно подобрать здесь (из второй таблицы)

Последний раз редактировалось EducatedFool; 22.09.2009 в 10:11.
EducatedFool вне форума Ответить с цитированием
Старый 22.09.2009, 10:16   #4
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

SAS888, EducatedFool спасибо!!! Все работает.
Иванов_ДМ вне форума Ответить с цитированием
Старый 22.09.2009, 16:04   #5
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

EducatedFool, SAS888 есть вопросы по автофигуре...

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

И еще вопрос: если автофигур скажем не 1, а 10, и значения для них расположены в интервале A1:B10 соответственно, то обычная конструкция выглядит очень массивной, можно ли как-нибудь ее оптимизировать?

Заранее спасибо!
Иванов_ДМ вне форума Ответить с цитированием
Старый 22.09.2009, 18:13   #6
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Если во влияющих ячейках стоят формулы или используйте событие
Worksheet_Calculate или в Worksheet_Change анализируйте ячейки
влияющие на [a1] [b1]
Aent вне форума Ответить с цитированием
Старый 23.09.2009, 05:20   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Пример по заливке_3.rar (12.9 Кб, 72 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 23.09.2009, 09:02   #8
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

SAS888 спасибо, все работает отлично!

Последний раз редактировалось Иванов_ДМ; 23.09.2009 в 11:07.
Иванов_ДМ вне форума Ответить с цитированием
Старый 23.09.2009, 11:07   #9
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Только один вопрос: как определить, какая из 10 фигур имеет какой порядковый номер (i) если все они называются одинаково("Нашивка 10")? Как мне идентифицировать нужную ячейку к определенной автофигуре?
Иванов_ДМ вне форума Ответить с цитированием
Старый 23.09.2009, 11:22   #10
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Для примера из поста №7 выполните макрос:
Код:
Sub DetAuto()
    Dim Sh As Shape, i As Integer, Msg As String: i = 1
    For Each Sh In ActiveSheet.Shapes
        Msg = Msg & "Адрес фигуры " & i & " : " & Sh.TopLeftCell.Address & vbCrLf: i = i + 1
    Next
    MsgBox Msg
End Sub
После его работы в окне сообщений будут выведены все номера автофигур и адреса ячеек верхнего левого угла для каждой фигуры соответственно.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать значения ячеек макросом torus Microsoft Office Excel 1 09.11.2008 00:15
запомнить значения ячеек dbgrid unit-85 Помощь студентам 4 22.10.2008 12:04
Автофигуры shmelvs Microsoft Office Word 6 16.07.2008 17:18
Автофигуры boks Microsoft Office Excel 1 04.06.2008 10:10