|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
26.09.2007, 12:10 | #1 |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
Изменить цвет при помощи макроса
Здравствуйте, я VB не писал ни разу, но потребовалось. Никакого материала у меня по нему нет. Скажите плиз где можно найти почитать и что лучше.
Мне надо цвета в ячейках изменить по условию, оператор нашел, но что-то никак не пойму как он работает. В excel'е после того как значение в ячейки расчиталось проверить больше оно или меньше значения содержащегося в другой ячейке, и исходя из этого поменять цвет в ячейках, т.е. заливку. И еще как события создавать? Например в делфях на кнопку кликать и действие
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
26.09.2007, 12:37 | #2 |
Форумчанин
Регистрация: 04.09.2007
Сообщений: 155
|
Посоветую файлы к книге, а саму книгу обязательно надо иметь (тьфу читать)
http://www.piter.com/books/download/978546901223 Поиск с выделением найденных данных Листинг 2.32. Выделение найденных данных Sub FindAndSelect() Dim strStartAddr As String ' Хранит координаты первого найденного _ значения Dim rgResult As Range ' Поиск первого входжения искомого слова Set rgResult = Range("B1:B10").Find("Прибыль", , xlValues) If Not rgResult Is Nothing Then ' Сохраним адрес найденной ячейки (чтобы контролировать _ зацикливание поиска) strStartAddr = rgResult.Address End If Do While Not rgResult Is Nothing ' Обработка результата поиска rgResult.Interior.Color = RGB(255, 255, 0) ' Новый поиск Set rgResult = Range("B1:B10").FindNext(rgResult) If rgResult.Address = strStartAddr Then ' Поиск завершен Exit Do End If Loop End Sub |
26.09.2007, 15:43 | #3 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
А.Долматов, А зачем Вы, для решения поставленной задачи, собираетесь использовать макросы ... ведь существует условное форматирование, которое прекрасно справляется с поставленной задачей.
Причём, во-первых, условное форматирование имеет приоритет над другими параметрами форматирования, т.е. если цвет ячейки был изменён с помощью у.ф., то установка другого цвета, например с помощью инструкции [A1].Interior.Color = RGB(255, 255, 0) не даст нужного эффекта. во-вторых, условное форматирование меняет цвет заливки вне зависимости от того защищена ли ячейка+лист или нет (впрочем, здесь многое зависит от версии, поэтому более осветить этот нюанс нужно отталкиваясь именно от версии) и в-третьих, при использовании у.ф., Вам не нужно задумываться о том, как отловить изменение в исходной ячейки, т.е. это будет сделано автоматически. А в случае использования событий учитывать характер изменений, видимо, придётся т.е. если данные например, вводятся вручную, то имеет смысл использовать событие Worksheet_Change(), если ячейка содержит формулу, то событие Worksheet_Calculate() Если же данные изменяются программно, то многие люди, на время выполнения макроса, просто блокируют выполнение событий, в этом случае изменения цвета заливки также не произойдёт, однако если применить условное форматирование, то такая проблема просто не возникнет. А что касается поиска, то в поставленной задачи не видно его необходимости, впрочем, те кому он может понадобиться - могут найти пример в справке, а этой книге место в печке, а её "авторам" в тюрьме, ибо как говорил Жиглов "Вор должен сидеть в тюрьме" © х/ф Место встречи изменить нельзя Последний раз редактировалось pashulka; 26.09.2007 в 17:23. |
26.09.2007, 15:50 | #4 |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
спс всем!!!! Буду ковырять у.ф.
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
26.09.2007, 18:15 | #5 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Спасибо большое... Мне самому надо было
Я использовал: Cells(x,y).Interior.Color = RGB(255, 255, 0) |
26.09.2007, 21:02 | #6 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 524
|
А теперь несколько слов о грустном :
На самом деле, несмотря на то, что функция RGB() иногда бывает очень полезна, использовать её применительно к ячейкам (заливка, шрифт) рабочего листа не имеет особого смыла и вот почему. Дело в том, что данную функцию, как правило, применяют для создания собстенного цвета, но ... в MS Excel (вплоть до XP включительно, дальше не помню) есть всего 56 стандартных цветов и при попытке установке цвета заливки, отличного от стандартной палитры, Excel автоматически выберет именно стандартный цвет (наиболее близкий по параметрам) Поэтому, если нет необходимости в демонстрации работы этой функции, то изменить цвет заливки, предположительно на жёлтый, можно следующим образом (предположим, что в момент выполнения этих инструкций активным является лист имеющий ячейки, и эти ячейки вкупе с листом, не защищены) Код:
Для этого, достаточно в меню Сервис выбрать команду Параметры, затем в появившемся стандартном окне выделить закладку Цвет, выбрать нужный цвет и используя кнопку Изменить создать нужный цвет. Теперь, если Вы выбрали именно жёлтый цвет, и изменили его, например, на нечто неподдающееся описанию, то все вышеприведённые инструкции приведут, предположительно, к изменению цвета заливки и установке именно этого цвета (тоже самое относится и к ячейкам с уже установленным жёлтым цветом) Второй раз предположительно было употреблено потому, что несмотря на изменение цвета заливки, визуально это может никак не проявиться и это может быть связано с наличием условного форматирования (см.выше) Стало быть, если Вы действительно хотите изменить цвет заливки на нужный и не беспокоиться о том, смогут ли Ваши подопечные или Вы, визуально наблюдать это изменение, то имеет смысл : - отобразить ячейку (ибо строки и столбцы могут быть и скрыты) - удалить условное форматирование - восстановить стандартную палитру (причём, это можно сделать как вручную, так и программно) Код:
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
изменить цвет в диалоговом окне MessageDlg | Михаил Юрьевич | Общие вопросы Delphi | 8 | 27.04.2008 18:20 |
Изменить цвет неактивного Edit | Xardas | Общие вопросы Delphi | 11 | 20.01.2008 22:38 |
Как изменить цвет | Михаил Юрьевич | Общие вопросы Delphi | 5 | 14.01.2008 17:38 |
Можно ли как-нить изменить цвет отдельной ячейки в DBGride? | 3lander | БД в Delphi | 2 | 10.10.2007 21:23 |
Как изменить цвет шрифта кнопки + объявление OnClick | Yury | Общие вопросы Delphi | 7 | 04.05.2007 04:55 |