Как назначить именованные диапазоны для пересечения диапазона для изменения листа? - PullRequest
1 голос
/ 28 июня 2019

Я не хочу использовать прямые ссылки на ячейки в этом бите кода VBA, потому что эти три ячейки этой «формы» будут смещаться. Невозможно найти правильный способ получения именованных диапазонов в подходе Interset Target Range для работы.

Гугл, у меня не было успеха (очевидно), таким образом, ny первый пост. Попытался изменить все, даже случайное завершение в кавычки, без квадратных скобок, добавив .Name. Тьфу. Сегодня пятница.

Чтобы раскрасить историю,

  • E18 - StartDate
  • E19 - Срок (мес.)
  • E20 - Конечная дата

FYI, Смена ячейки запускает код, чтобы работать хорошо. Те же именованные диапазоны хорошо работают в остальной части кода.

Ожидая
Что-то вроде Range («E18: E18, E19: E19, E20: E20») вместо этого превращается в именованные диапазоны (которые по конструкции являются именованными присваиваниями из одной ячейки) в моем нерабочем фрагменте кода ниже.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range([Term_End_Date], [Term_Duration__mo], [Term_Start_Date])) Is Nothing Then Exit Sub
'was If Intersect(Target, Range("E18:E20")) Is Nothing Then Exit Sub    
'<snip> rest works well

Спасибо!

1 Ответ

0 голосов
/ 28 июня 2019

Попробуйте это

Dim rng As Range

Set rng = Union(Range("Term_End_Date"), Range("Term_Duration__mo"), _
                Range("Term_Start_Date"))

If Not Intersect(Target, rng) Is Nothing Then
    '~~> Do What you want
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...