Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Помогите с Excel VBA. Задание для интеллектуалов. Добавлено: 03.11.06 23:48  

Автор вопроса:  Gewehr
Дана таблица товаров и цен на них. Как сделать так, чтобы в зависимости от цены цвет названия товара ранжировался бы от светлого до чёрного(Проходя все цвета схемы RGB)? Напишите здесь как это сделать, пожалуста!

буду благодарен за любую помощь.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Василий



Вопросов: 8
Ответов: 27
 Профиль | | #1 Добавлено: 04.11.06 01:36
Формат>Условное форматирование.

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #2
Добавлено: 04.11.06 12:52
Не понял, что значит ранжировался?
По времени что-ли?

Ответить

Номер ответа: 3
Автор ответа:
 Gewehr



Вопросов: 1
Ответов: 4
 Профиль | | #3 Добавлено: 05.11.06 10:22
Как это сделать через VBA?

Ответить

Номер ответа: 4
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #4
Добавлено: 05.11.06 10:40
Сервис->Макрос->Начать запись :))))))))

Ответить

Номер ответа: 5
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #5 Добавлено: 05.11.06 16:04
2 -АлександР-
ранжировался

в смысле градиент получался - у самой валенькой цены- самый светлый цвет и т д

Ответить

Номер ответа: 6
Автор ответа:
 Gewehr



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 05.11.06 16:57
Да! Кто-нибудь привидите здесь кусок програмного кода ВБА выполняющего эту задачу

Ответить

Номер ответа: 7
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #7
Добавлено: 05.11.06 18:49
Ну, вот для примера... вероятно, требуются некоторые улучшения... но что уж у меня получилось с ходу:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cc As Range, i As Integer, mx As Double, mn As Double
    mx = WorksheetFunction.Max(Range("Цена";))
    mn = WorksheetFunction.Min(Range("Цена";))
    For Each cc In Intersect(Range("Цена";), UsedRange).Cells
        If WorksheetFunction.IsNonText(cc) Then
            i = CInt((cc.Value - mn) / (mx - mn) * 255)
            cc.Interior.Color = RGB(i, i, i)
            If i < 63 Then cc.Font.Color = RGB(255, 255, 255)
        End If
    Next cc
End Sub


Это обработчик события Change, должен быть на листе, где должна происходить обработка. Область чеек столбца с ценами должна быть именована как "Цена".

Цвета распределятся от белого до черного. Если ячейка получается слишком темной, шрифт в ней меняется на белый.

Смотрите, пробуйте, улучшайте. Если что - спрашивайте.

(В Excel в моей версии не очень большой набор градиентов серых цветов, так что у меня результат выглядел не очень впечатляющим. С другим цветами - экспериментируйте сами с помощью RGB функции.)

Ответить

Номер ответа: 8
Автор ответа:
 Gewehr



Вопросов: 1
Ответов: 4
 Профиль | | #8 Добавлено: 05.11.06 20:27
Вопрос в том, как всё это запустить у себя?
Можешь объяснить?)

Ответить

Номер ответа: 9
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #9
Добавлено: 05.11.06 22:41
Смотря на таблицу товаров в Excel, кликаешь на ярлычке этого листа правой клавишей мыши, выбираешь из выпавшего - Исходный текст..., в открывшееся окно вставляешь предложенный мной код (заблаговременно скопированный в буфер клавиатуры путем выделения на этой странице форума и нажатием <Ctrl+C>;)... возвращаешься в окно книги, выделяешь колонку с ценами, кликаешь в крайнем левом поле строки ввода формулы (там где обычно виднеется адрес ячейки с курсором), вводишь в это поле слово "Цена", нажимаешь Enter, и изменяшь любую ячейку разглядываемого в этот момент листа... После этого, цены будут выделены разным цветом (серые от белого до черного), в зависимости от значения.

Ответить

Номер ответа: 10
Автор ответа:
 Gewehr



Вопросов: 1
Ответов: 4
 Профиль | | #10 Добавлено: 05.11.06 23:26
GenyaA, спасибо, дружище! Мне понадобилась только вот эта формула CInt((cc.Value - mn) / (mx - mn) * 255), а дальше сам дошёл)


With great respect and commendation, from Gewehr

Ответить

Номер ответа: 11
Автор ответа:
 Xiaofang



Вопросов: 0
Ответов: 5
 Профиль | | #11 Добавлено: 10.05.08 23:20
Excel не поддерживает все RGB-цвета, иногда "округляя" их до полной неузнаваемости. Нужно пользоваться цветовыми индексами.

Ответить

Номер ответа: 12
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #12
Добавлено: 11.05.08 01:53
Вопрос: Помогите с Excel VBA. Задание для интеллектуалов. Добавлено: 03.11.06 23:48

Ему теперь очень нужен твой ответ... спустя два года...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам