Применение кода VBA к каждой ячейке для отображения другой ячейки - PullRequest
0 голосов
/ 28 ноября 2018

Я все еще учусь писать на VBA, и это довольно сложно.Надеюсь, что кто-то может мне помочь.

Я хочу выделить ячейку в столбце D:E, G, когда я выберу "Добавить CCG / CC / PCG / PC" в моем столбце B.Но я хочу применить это от B15:B114.когда я выбираю его в B15, D14:E15, G15 должны быть выделены.если я выберу B18, то D18, E18 & G18 должны быть выделены и так далее.я могу сделать это только в один ряд, но как я могу применить его к желаемому диапазону, не делая это один за другим?заранее спасибо

Private Sub Worksheet_Change(ByVal Target As Range)

    If Range("B15").Value = "Add CCG/CC/PCG/PC" Then

    Range("D15:E15,G15").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

    ElseIf Range("B15").Value = "" Then
    Range("D15:E15,G15").Select

        With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0

    End With

    End If

End Sub

1 Ответ

0 голосов
/ 07 декабря 2018

Чтобы сделать это только с условным форматированием:

  • Выберите ячейки D15:E15, G15
  • Выберите Новое правило в Conditional Formatting,
    • Выберите Используйте формулу, чтобы определить, какие ячейки форматировать
    • Добавьте формулу =$B15="Add CCG/CC/PCG/PC"
      Примечание - нет $ передномер строки.
    • Установите желаемый формат.
  • Перетащите D15:E15, G15 до D114:E115, G114.

Чтобы сделать это с VBA:

Private Sub Worksheet_Change(ByVal Target As Range)

    'Check the changed cell is in the range B15:B114.
    'Not Is Nothing = it is something...
    If Not Intersect(Target, Range("B15:B114")) Is Nothing Then
        With Target
            If .Value = "Add CCG/CC/PCG/PC" Then
                'Target is the changed cell.  Offset by 2 columns is column D.
                'Resize by 2 columns is columns D:E.
                'Union with Offset 5 columns (column G) to return cells to change.
                With Union(.Offset(, 2).Resize(, 2), .Offset(, 5)).Interior
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                    .ThemeColor = xlThemeColorLight1
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            Else
                With Union(.Offset(, 2).Resize(, 2), .Offset(, 5)).Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
        End With
    End If

End Sub

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...