Как работать с большим количеством Target.Address (диапазон) - PullRequest
0 голосов
/ 19 июня 2019

В ячейке я составил список на выбор. Однако одного выбора недостаточно. Я нашел некоторый код VBA, который позволяет мне делать больше выбора. Но этот код указывает на конкретную ячейку. Я хочу использовать это более общее в листе, вероятно, в диапазоне.

Я пытался указать диапазон как target.address, но это не сработает. Он также не будет работать с диапазоном в одну ячейку (J3). Я обнаружил, что приведенная ниже формула не работает после удаления знаков доллара из $j$3.

Dim Oldvalue As String
Dim Newvalue As String


On Error GoTo Exitsub
TheCell = ActiveCell

If Target.Address = "$J$13" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
        If Oldvalue = "" Then
            Target.Value = Newvalue
        Else
            Target.Value = Oldvalue & ", " & Newvalue
        End If
    End If
End If
Application.EnableEvents = True

Exitsub:
Application.EnableEvents = True

End Sub

Я ищу решение, чтобы выбрать из всего списка более одного элемента. Формула должна быть изменена таким образом, чтобы ее можно было использовать в диапазоне ячеек. Эти ячейки имеют один и тот же список выбора.

1 Ответ

2 голосов
/ 19 июня 2019

Вместо

If Target.Address = "$J$13" Then

Вы можете Пересечь вашего Target диапазона с диапазоном, который вы хотите проверить:

Dim AffectedRange As Range
Set AffectedRange = Intersect(Target, Me.Range("J13:J20")) 'put your range here

If Not AffectedRange Is Nothing Then

    Dim Cell As Range
    For Each Cell In AffectedRange 'loop through all affected cells
        'here use Cell instead of Target
    Next Cell

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