Поиск именованного диапазона или именованного объекта

#excel #vba

#excel #vba

Вопрос:

Моя электронная таблица использует CHOOSE формулу, чтобы определить, какую таблицу использовать при вычислении. Я предварительно создал эту формулу выбора с 12 именами на выбор. Я еще не создал все 12 объектов для этой формулы.

Я попытался присвоить таблице имя после одного из имен, указанных в формуле выбора ниже:

CHOOSE('Loss Template'!$M$50,Jun_20, July_20, Sept_20, Oct_20)

ПРИМЕЧАНИЕ: Нет известного объекта с таким именем Oct_20

Excel сказал: «Имя уже существует, и мне нужно сделать имя уникальным».

Действия, которые я выполнил:

  1. Я попытался удалить Oct_20 из выбрать и назвать таблицу, а затем

    То же предупреждение «Уже существует»

  2. Пытался найти объект с таким именем с помощью панели быстрого доступа

    «Oct_20» не существует и не может быть найден с помощью этой функции

  3. Удалены все неиспользуемые имена с помощью VBA

    То же предупреждение «Уже существует»

  4. Не удалось найти Oct_20 в «Formulas -> Names Manager»

Я пытаюсь использовать Oct_20 в качестве имени таблицы любую идею о том, как это исправить?

Комментарии:

1. @BigBen там тоже не существует

2. Можете ли вы назвать его ЛЮБОЙ из строк даты? Или проблема возникает только в Oct_20?

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

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

5. Итак, вы МОЖЕТЕ назвать таблицу Sep_20 ?

Ответ №1:

Чтобы отобразить ВСЕ имена в вашей книге, в обычном модуле книги:

 Sub showAllNames()
    Dim Nm As Name
    For Each Nm In ThisWorkbook.Names
        Debug.Print Nm.Name, Nm.RefersTo
    Next Nm
End Sub
  

Примечание: Если Name не существует, то проблема в том, что вы ввели CHOOSE формулу (содержащую имена) до того, как назвали таблицы. Измените эту формулу на текст; затем попробуйте присвоить таблицам имена; затем измените его обратно на формулу.

Как только вы будете удовлетворены, Oct_20 это можно удалить:

 Sub DeleteHiddenName()
    Dim sNM As String, Nm As Name
    sNM = InputBox("What Name?")
    
Set Nm = ThisWorkbook.Names(sNM)
  Nm.Delete
    
End Sub
  

Очевидно, что для работы этим макросам потребуется проверка ошибок и другие вещи. Но это может помочь вам начать.

Комментарии:

1. Я получаю ошибку времени выполнения «1004», когда я попробовал ваш приведенный выше код

2. @PotterFan В какой строке? И какой код? Я опубликовал два.

3. Код удаления на Set Nm = ThisWorkbook.Names(sNM)

4. @PotterFan Oct_20 отображался при использовании первого кода? Если да, то что это ReferTo дало?

5. @PotterFan Вы не можете удалить имя, которое не существует. Отсюда и ошибка.