Фоновый диапазон Excel VBA для события onChange - PullRequest
0 голосов
/ 21 ноября 2018

Попытка создать событие Excel VBA, которое сработает после ввода значения в диапазоне.

Таким образом, диапазон от столбца A до столбца AS.Если я введу значение в столбец A2, он заполнит индекс цвета фона до диапазона (A2: AS2).

Приведенный ниже код активирует все строки и столбцы.Пожалуйста, помогите.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Value <> "" Then
        currentRow = Target.Row
        ActiveSheet.Range("A" & curRow & ":AS" & curRow).Interior.ColorIndex = 15
            'Target.Interior.ColorIndex = 15
    End If
End Sub

1 Ответ

0 голосов
/ 21 ноября 2018

Используйте пересечение, чтобы проверить, находится ли диапазон Target в требуемом диапазоне, например, столбец A

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Value <> "" Then
            curRow = Target.Row
            Target.Parent.Range("A" & curRow & ":AS" & curRow).Interior.ColorIndex = 15
                'Target.Interior.ColorIndex = 15
        End If
    End If
End Sub

Избегайте использования ActiveSheet, используйте Target.Parent.ActiveSheet может быть другим листом и не обязательно является листом, в котором находится цель.

В качестве альтернативы используйте Target.Resize:

Target.Resize(ColumnSize:=45).Interior.ColorIndex = 15  

Таким образом, в итоге вы получите:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Value <> "" Then
            Target.Resize(ColumnSize:=45).Interior.ColorIndex = 15
        End If
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...