У меня есть некоторые ячейки в документе Excel, заполненном от именованного диапазона (данные/проверка/список source=MyNamedRange):
Здесь, диапазон A1:A3 называют Foobar
B5:B6 является объектом подтверждения правильности данных с, он - исходный набор к 'Foobar'
Я хотел бы смочь обновить содержание ячейки A2 от Панели до Quux, и видеть автоматически содержание ячейки B5, обновленное к Quux, поскольку это - источник, был изменен.
Это могло бы быть выполнено посредством макроса, но я не знаю, как кодировать это.
Какие-либо подсказки?
Это кажется опасным, но я не вижу проблемы с ним. В основном при изменении чего-нибудь в Foobar он ищет каждую ячейку на листе, который имеет Подтверждение правильности данных. Если DV указывает на Foobar, и значение не находится в списке, то это, должно быть, было значение, которое было изменено. Это работало с моим ограниченным тестированием. Сообщите мне, видите ли Вы какие-либо дефекты.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range
Dim rFound As Range
'Only run this when a cell in Foobar is changed
If Not Intersect(Target, Me.Range("Foobar")) Is Nothing Then
'Go through every data validation cell in the sheet
For Each rCell In Me.Cells.SpecialCells(xlCellTypeAllValidation).Cells
'if the DV in the cell points to foobar
If rCell.Validation.Formula1 = "=Foobar" Then
'See if the cell's value is in the Foobar list
Set rFound = Me.Range("Foobar").Find(rCell.Value, , xlValues, xlWhole)
'If it's not in the list, it must be the one that
'changed, so changed it
If rFound Is Nothing Then
Application.EnableEvents = False
rCell.Value = Target.Value
Application.EnableEvents = True
End If
End If
Next rCell
End If
End Sub
Обратите внимание, что это входит в модуль Рабочего листа, не стандартный модуль. Как всегда, тестовый код на копии Вашей рабочей книги.
Необходимо было бы использовать VBA, чтобы выполнить это или иметь дополнительную ячейку вычисления для каждого из B5:B6, которые обнаружат, что значение ячейки больше не содержится в именованном диапазоне, и отметьте это.
Я использую для поддержания огромной рабочей книги, которая имела тысячи таких зависимостей, это был реальный кошмар для отладки.
Эта ссылка имеет больше на способах обойти одностороннюю природу ссылки между исходным диапазоном проверки и целевой ячейкой.