Страницы: 1
RSS
Выделение ячеек по условию в отчете по текущему месяцу, macro, vba
 
Доброго времени суток,
Коллеги, прошу помочь с таким макросом. Есть отчет. Фаил в приложении.
Задача. Если '=MONTH(TODAY())=V3 (4 месяц, Апрель) & '=ISBLANK(C6) (содержится текст), значит выделить ячейку  V6 цветом серым.
В 5 месяце Мае, когда приступишь к отчету, при запуске макроса, должен выделить 5 месяц Май, и соответсвенно вернуть в 4 месяц Апрель в прозрачный цвет.
Применимо только к activesheets.
Надеюсь, задачу сформулировал корректно.
Всем спасибо кто откликнется.
 
1. Почему не УФ
2.
Цитата
Alex D написал: Надеюсь, задачу сформулировал корректно
ну кроме того что
Цитата
Alex D написал: в прозрачный цвет
- прозрачного цвета не бывает :-)
По вопросам из тем форума, личку не читаю.
 
Бывает. Дым из ядреной самокрутки медведя, напимер. Он есть, но прозрачен :)
 
Цитата
БМВ написал:
1. Почему не УФ
А что такое УФ?
Цитата
БМВ написал:
- прозрачного цвета не бывает :-)
тут и не поспоришь
 
Правило для УФ:
=И(P$3=МЕСЯЦ(СЕГОДНЯ());$C6<>"")
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
УФ - условное форматирование.  Почитайте в "Приемах" эту и эту статьи.
 
Условное Форматирование (Conditional Format)
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
- прозрачного цвета не бывает :-)
ОФТОП
Лень двигатель прогресса, доказано!!!
 
Цитата
Сергей написал:
ОФТОП
в точку!
 
Максим В., спасибо большое за пример.
К сожелению, это не применимо к моем случаю. В отчете не прописаны номера месяцов. Функции были указаны, что бы логику показать.
Отчет выглядит приблизительно вот так. Фаил в приложении.

Цитата
Юрий М написал: УФ - условное форматирование
Спасибо за направление, но нужен макрос.
Спасибо, если взгляните еще раз.
 
Цитата
Alex D написал:
Спасибо за направление, но нужен макрос.
не все так просто как кажется формула в УФ
Код
=И($C6<>"";P$5=ТЕКСТ(СЕГОДНЯ();"[$-809]МММ"))
Лень двигатель прогресса, доказано!!!
 
Alex D, а то, что месяцы идут не по порядку, так и надо?
 
Это фискальный год такой. Да так нужно.
 
Alex D, ну на первое время может подойдет, вставить нужно в рабочий лист.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
Dim d As Variant
Dim dicCountry1

d = Format(Date, "mmmm")

Set dicCountry1 = CreateObject("Scripting.Dictionary")
        dicCountry1.Item("Октябрь") = 16
        dicCountry1.Item("Ноябрь") = 17
        dicCountry1.Item("Декабрь") = 18
        dicCountry1.Item("Январь") = 19
        dicCountry1.Item("Февраль") = 20
        dicCountry1.Item("Март") = 21
        dicCountry1.Item("Апрель") = 22
        dicCountry1.Item("Май") = 23
        dicCountry1.Item("Июнь") = 24
        dicCountry1.Item("Июль") = 25
        dicCountry1.Item("Август") = 26
        dicCountry1.Item("Сентябрь") = 27
        
On Error Resume Next
If Target.Column = 3 And Target.Cells <> "" Then
        i = Target.Row
        Cells(i, dicCountry1.Item(d)).Interior.Color = vbRed
        Cells(i, dicCountry1.Item(d)).Offset(0, -1).Clear
    End If

End Sub
Изменено: OblivionR - 25.04.2019 18:50:00
 
Цитата
OblivionR написал:
Alex D, ну на первое время может подойдет, вставить нужно в рабочий лист.
Спасибо огромное! Протестируем сегодгя.
 
Цитата
Сергей написал:
не все так просто как кажется формула в УФ
Не уверен что сюда заглянуть. Но все же поправлю себя.
УФ - сильня штука. Ниже приведен макрос на строгой суд. Если кто вернется сюдя, дайте пожалуйста коментарии.
Спасибо.
Код
Sub nce_period() 'NCE_report (final)
Application.ScreenUpdating = False

Range("A6:BN170").Select             'highlite current period
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3<>"""",R5C=TEXT(TODAY(),""[$-809]mmm""))"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(217, 217, 217)
        End With

Range("A6:BN170").Select             'de-emphasize previous period
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3<>"""",R5C=TEXT((EDATE(TODAY(),-1)),""[$-809]mmm""))"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(255, 255, 255)
        End With

Range("C1:BN170").Select            'highlite NCE Assets
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""NCE Assets"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With

Range("C1:BN170").Select            'highlite NCE Liabilities
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""NCE Liabilities"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With

Range("C1:BN170").Select            'highlite Net capital employed (NCE)
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""Net capital employed (NCE)"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With
      
Range("C1:BN170").Select            'highlite Asset
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""Asset"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With
      
Range("C1:BN170").Select            'highlite Liabilities
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""Liabilities"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With
      
Range("C1:BN170").Select            'highlite NCE
   Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=AND(RC3=""NCE"",R5C<>"""")"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = RGB(191, 191, 191)
        End With
End sub
Изменено: Alex D - 29.04.2019 11:36:52
Страницы: 1
Наверх