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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 17:14   #1
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию Форматирование ячейки по условию

Добрый день!
В файле выложен пример собственной разработки.
Задача такая: если белые ячейки в строке моей таблицы не пусты то в значение в закрашеной должно становится курсивом, если только одна из белых ячее пуста то соответственно должно делаться не курсивом
В примере я выложил собственный макрос но он не отслеживает собитие в в белых ячейках и все делает если только я изменяю желтую, хотя желтая вводится первая, а уже вслед за ней заполняются все остальные ячейки строки. Пример - модель реальной ,более громоздкой задачи.
Вложения
Тип файла: rar Пример 28.rar (6.8 Кб, 12 просмотров)
Severny вне форума Ответить с цитированием
Старый 04.04.2012, 18:04   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Без макроса, условное форматирование:
Вложения
Тип файла: rar Пример 28-1.rar (6.8 Кб, 20 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 04.04.2012, 18:04   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Ваш вопрос, как бы уже содержит ответ:
условное форматирование (и не надо макросы писать, которых Вы написать не можете).
в условное форматирование вот этот
Код:
=СЧЁТЗ(RC5:RC6)=2
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.04.2012, 10:33   #4
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Казанский, IgorGO спасибо!
IgorGO, я думаю если бы Вы не пробовали программировать, то и не научились бы программировать Собственно вот так же и я. Пытаюсь научится писать макросы, использую возникающие вопросы в процессе моей работы. Хотелось бы решить и данный пример с помощью макроса. Если поможете, я буду благодарен, если нет - тоже
Казанский, можно и Вас попросить помочь с макросом.

Последний раз редактировалось Severny; 05.04.2012 в 12:24.
Severny вне форума Ответить с цитированием
Старый 05.04.2012, 13:07   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Попробуйте. Вычисления оптимизированы для случая, когда меняется сразу несколько ячеек заданного диапазона: просматриваются только те строки диапазона, в которых произошло изменение.
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, cc&, c1&, r1&
On Error Resume Next
With Range("E18:F20")   'диапазон, от которого зависит условное форматирование
                        'можете изменить его тут, в одном месте - все остальное пересчитается
    cc = .Columns.Count
    c1 = .Column - 1
    r1 = .Row - 1
    For Each r In Intersect(Target, .Cells).Rows
        Cells(r.Row, c1).Font.Italic = Application.Count(.Rows(r.Row - r1)) = cc
    Next
End With
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 05.04.2012 в 14:20.
Казанский вне форума Ответить с цитированием
Старый 05.04.2012, 13:13   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
если бы Вы не пробовали программировать, то и не научились бы
с этим не поспоришь...
но более интесивный путь освоить программирование, разбираться и писать самому. очевидно, что в данной ситуации, контролировать необходимо не те ячейки, в которых меняем стиль шрифта, а ячейки правее. Set rg = [e18:f20] - задает габариты контролируемого диапазона.
пробуйте этот
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rg As Range, cl As Range, cc As Long, bc As Long, ec As Long
  Set rg = [e18:f20]
  bc = rg.Column: ec = rg.Columns.Count: cc = bc - 1: Set rg = Application.Intersect(Target, rg)
  If rg Is Nothing Then Exit Sub
  For Each cl In rg.Rows
    Cells(cl.Row, cc).Font.Italic = WorksheetFunction.CountA(Cells(cl.Row, bc).Resize(1, ec)) = ec
  Next
  Set rg = Nothing
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 05.04.2012 в 13:25.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условное форматирование по условию alexsampler Microsoft Office Excel 3 15.09.2011 17:00
Условное форматирование диапазона по условию alexsampler Microsoft Office Excel 19 12.09.2011 23:51
Форматирование текста по условию BAH4EG Microsoft Office Access 1 04.06.2010 14:30
Форматирование ячейки по образцу yuretsnsk Microsoft Office Excel 4 19.06.2009 07:44
Форматирование ячейки Nando Microsoft Office Excel 1 18.02.2008 01:35