Как разрешить имена диапазонов без выбора ячеек - PullRequest
2 голосов
/ 24 апреля 2019

Можно ли заставить Excel разрешать все имена диапазонов с помощью VBA при импорте листа?В некоторых случаях имена не разрешаются до тех пор, пока не будут выбраны отдельные ячейки, выделенные в строке формул и отмененные.Похоже, что если лист содержит любое имя, которое не существует в диспетчере имен, все последующие имена игнорируются.

Мое приложение выполняет код VBA в книге «Менеджер», оттуда я открываю вторую книгу «Шаблон» для генерации отчета о тестировании.Страницы отчета (рабочие листы) могут быть добавлены к шаблону с помощью элемента управления ленты.Эти добавленные рабочие листы имеют различные ячейки с именами для автоматического заполнения отчета по данным, уже находящимся в шаблонной книге.Так, например, при импорте рабочего листа («Результаты») представление показывает:

Address     Formula       Value     Display
F18        =WeightAir     335        335
F19        =WeightWater   Name missing in this workbook
B39        =Length        1.1       #NAME?
C47        =Author        N H       #NAME?

Если я выберу ячейку C47, щелкните в строке формул и снова вернитесь, чтобы значение ячейки отображалось правильно.Ячейка B39 остается ошибочной.Есть другие ячейки в том же листе, которые не заполняются, это просто для примера.Я пытался использовать VBA, чтобы выбрать диапазон ячеек (включая все, которые показывают #NAME? Error), чтобы форсировать вычисления, но это, кажется, не имеет никакого эффекта

DestWB.Worksheets(ShtCount).Range("A1", "Z65536").Select
DestWB.Worksheets(ShtCount).Calculate
DestWB.Worksheets(ShtCount).Range("A1").Select

Я выбрал предложение использовать это, которое яприменить перед закрытием «исходной книги»

DestWB.Worksheets(ShtCount).UsedRange.Formula = _
          OrigWB.Worksheets(1).UsedRange.Formula

Но если лист содержит любое имя, которого нет в менеджере имен, для этой книги все последующие имена (т. е. ячейки с более высоким столбцом, адресом строки)игнорируютсяЕсть ли способ принудительно разрешить все известные имена, оставляя только пропущенные значения?Любые предложения, пожалуйста?

1 Ответ

0 голосов
/ 24 апреля 2019

Хотя я не мог воспроизвести проблему, созданную "копией" листа , я смог сгенерировать "Formula s в Error из-за отсутствия Names«.

Следующая процедура обновила Formulas в Error, для которого Names присутствовал в Workbook, оставив ошибку только несуществующей Name.

Sub Formulas_InError_Refresh()
Dim wb As Workbook
Dim rErr As Range
Dim rArea As Range
    Set wb = ActiveWorkbook 'Change to the required workbook
    Set rErr = wb.Worksheets("Results").UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
    For Each rArea In rErr.Areas
        With rArea
            .Formula = .Formula
    End With: Next
    End Sub

enter image description here

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