Excel: Обновите значение в именованном диапазоне

У меня есть некоторые ячейки в документе Excel, заполненном от именованного диапазона (данные/проверка/список source=MyNamedRange):

Sample

Здесь, диапазон A1:A3 называют Foobar

B5:B6 является объектом подтверждения правильности данных с, он - исходный набор к 'Foobar'

Я хотел бы смочь обновить содержание ячейки A2 от Панели до Quux, и видеть автоматически содержание ячейки B5, обновленное к Quux, поскольку это - источник, был изменен.

Это могло бы быть выполнено посредством макроса, но я не знаю, как кодировать это.

Какие-либо подсказки?

6
задан 27.11.2012, 22:16

3 ответа

Это кажется опасным, но я не вижу проблемы с ним. В основном при изменении чего-нибудь в 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

Обратите внимание, что это входит в модуль Рабочего листа, не стандартный модуль. Как всегда, тестовый код на копии Вашей рабочей книги.

4
ответ дан 07.12.2019, 16:16

Необходимо было бы использовать VBA, чтобы выполнить это или иметь дополнительную ячейку вычисления для каждого из B5:B6, которые обнаружат, что значение ячейки больше не содержится в именованном диапазоне, и отметьте это.

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

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

1
ответ дан 07.12.2019, 16:16

Что Вы делаете, теперь хранилище значение A2 в B6. Но необходимо сохранить ссылку на A2. Затем B6 обновил бы автоматически. Я думаю "=A2" (без кавычек), поскольку значение поля должно сделать это.

0
ответ дан 07.12.2019, 16:16

Теги

Похожие вопросы