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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.08.2008, 10:05   #1
koda
 
Регистрация: 01.08.2008
Сообщений: 5
По умолчанию График работ

Добрый день.

Прошу помощи, сделал «график работ» в котором отображается определенная компания когда была оплата, какой слесарь делает, конечный срок и т.д. Справа в календаре рисуется график, построен он на «условное форматирование». Проблема в том что хотелось что бы этот график был цветным в зависимости от того какой слесарь делает объект. Нашел макрос который заменяет «условное форматирование» но как реализовать его в графике не знаю.
Вложения
Тип файла: zip График работ.zip (85.8 Кб, 38 просмотров)
koda вне форума
Старый 26.08.2008, 15:47   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

замените Ваш код на следующий:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Author Russell Hauf, Beaverton, Oregon, USA              '
' Автор Рассел Гауф, Бивертон, Орегон, США                 '
'                                                          '
' тому, кто уберет автора, лично оторву шаловливые ручонки '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Этот макрос реализует условное форматирование
' с более чем 3-мя условиями.
    Dim rng As Range
' Исходный диапазон может содержать более чем 1 ячейку,
' поскольку он задается как пересечение диапазонов Target
' и D:D. Благодаря этому макрос будет выполняться корректно
' при удалении содержимого нескольких ячеек столбца D или
' вводе значений нескольких ячеек столбца D в виде массива.
    Set rng = Intersect(Target, Range("C:C"))
    If rng Is Nothing Then
       Exit Sub
    Else
        Dim cl As Range
        Dim clInd As Integer
        
        For Each cl In rng
            On Error Resume Next
' Если содержимое ячейки отсутствует
' в диапазоне rngColors, ее заливка удаляется.
            clInd = Application.WorksheetFunction.VLookup(cl.Value, _
ThisWorkbook.Sheets("Праздники").Range("rngColors"), _
2, False)
            
            If Err.Number = 0 Then
              cl.Interior.ColorIndex = clInd
               If cl.Row > 6 Then
                   Application.EnableEvents = False
                   Application.ScreenUpdating = False
                   Dim cl2 As Range
                   For Each cl2 In Range(Cells(cl.Row, "L"), Cells(cl.Row, "CY"))
                      cl2.FormatConditions(1).Interior.ColorIndex = clInd
                   Next cl2
                   Application.EnableEvents = True
                   Application.ScreenUpdating = True
                End If
            Else
               cl.Interior.ColorIndex = xlNone
            End If
        Next cl
    End If
End Sub
фокус в замене цвета условного форматирования на нужный в момент смены мастера (т.е., пока мастера не поменяешь - цвет не поменяется!)
Serge_Bliznykov вне форума
Старый 26.08.2008, 16:21   #3
дмидми
Форумчанин
 
Аватар для дмидми
 
Регистрация: 06.03.2008
Сообщений: 352
Смех

(В сторону.)
Что-то я сегодня разъехидничался...
(Громко.)
Отрывать шаловливые ручонки - это, может быть, и хорошо, но наверняка ещё лучше было бы привести комментарии в соответствие с кодом:

Цитата:
' Исходный диапазон...задается как пересечение диапазонов Target
' и D:D...
Set rng = Intersect(Target, Range("C:C"))
, не говоря уже обо всём остальном, вроде невероятного для нормального кода количества невынесенных к заголовку констант ("L", "CY"), действительных только для какого-то конкретного и давно уже никому не нужного случая.

Кстати, а на кой ляд вообще сдалось условное форматирование, если прямое и вполне себе безусловное форматирование выполняется из кода?
дмидми вне форума
Старый 26.08.2008, 17:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по поводу автора и шаловливых ручек - это было в исходном файлике. поэтому я и побоялся трогать этот комментарий - за свои ручки опасался;-))))

Цитата:
Сообщение от дмидми
Кстати, а на кой ляд вообще сдалось условное форматирование, если прямое и вполне себе безусловное форматирование выполняется из кода?
дмидми, вопрос, надеюсь - не ко мне?! ;-)
потому как мне лень было менять условное форматирование на безусловное... так ещё и диаазон слежения в work_change пришлось бы расширять (на даты)... а так - решение задачи минимальным (я бы сказал - "хирургическим", вмешательством ;-))
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учет работ строительной компании Droid БД в Delphi 3 04.06.2014 20:21
Ищется программист для наспиасания студенческих работ toeman Фриланс 9 15.04.2009 22:41
БД учёта кабельных работ Fainder Софт 0 13.02.2008 10:56
график Димарик Помощь студентам 2 30.06.2007 09:12