1

Я пытаюсь получить доступ к именованному диапазону через VBA:

Set rng = selectionSht.Parent.Names(rangeName).RefersToRange

Однако этот конкретный именованный диапазон сопоставляется с таблицей на скрытом рабочем листе. Когда рабочий лист скрыт, именованный диапазон исчезает из списка именованных диапазонов, который отображается, когда я захожу в « Formulas->Name Manager , но он появляется в списке, когда я показываю лист. Этого не происходит с другими именованными диапазонами, которые ссылаются на статические диапазоны - похоже, это проблема только для именованных диапазонов, которые соответствуют таблицам.

Когда лист скрыт, приведенная выше строка кода VBA возвращает:

Run-time error '1004':
Application-defined or object-defined error

Как я могу сделать этот именованный диапазон читаемым, когда лист скрыт?

1 ответ1

3

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

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

  1. Включите Application.ScreenUpdating = False
  2. .Show скрытую область, на которую вы ссылаетесь
  3. Выполните любую операцию, которую вам нужно сделать с указанными ячейками
  4. .Hide область, над которой вы работали
  5. Включите Application.ScreenUpdating = True снова включен .

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .