Как настроить циклический просмотр листов в настройках? - PullRequest
2 голосов
/ 01 июля 2019

Я создал свой макрос, используя подсказки, но он не работает. Имея список листов на странице настроек, мне нужно просмотреть только те листы, которые перечислены здесь. Если я объявляю лист через его имя, он работает. Проблема в том, когда я пытался использовать диапазон.

Я не могу активировать список. В VBA я вижу его значение указателем мыши (99), но он не работает. Моя фамилия - List2 (99) в VBA; 99 виден пользователю. (Я использую Excel 365 на чешском языке)

Dim List As Range
Dim Listy As Range
Set Listy = Sheets("Setting").Range("A2:A3")

For Each List In Listy
    Sheets("99").Activate        ' this is working

    Sheets(List).Activate        'this is not working

    Sheets(List.Value).Activate 'this is not working

    Sheets(List.Name).Activate  'this is not working
    '... rest of my code
next list

Я ожидаю, что смогу активировать Лист 99, используя диапазон Listy вместо его имен.

Ответы [ 2 ]

1 голос
/ 01 июля 2019

вторая итерация, когда вы добавили «.value» в список, является ближайшей к вам ... Я бы посоветовал вам попробовать использовать Sheets (list.value) .select вместо Activate. Никогда не было проблем с первым, а со вторым я склонен использовать его для рабочих тетрадей.

Посмотрите, будет ли это улажено:

Dim List As Range Set Listy = Sheets («Настройка»). Диапазон («A2: A3»)

Для каждого списка в списке

листов (List.Value). Выбрать 'ПОПРОБУЙТЕ ЭТО! Далее

0 голосов
/ 01 июля 2019

Проблема в том, что ваш диапазон возвращает целочисленные значения.Следовательно, вызов Sheet(index) интерпретирует индекс как номер индекса листа.Таким образом, вместо того, чтобы называть `Sheet (" 99 "), вы фактически называете Sheet (99).Поскольку в вашей рабочей книге нет 99-го листа, вы получаете ошибку «Подстрочный индекс вне диапазона».Нам нужно преобразовать ваши значения в строки.

Это то, что вы должны сделать:

Dim Listy As Range
Set Listy = Sheets("Setting").Range("A2:A3")

For Each cell In Listy
    Sheets(CStr(cell.Value)).Activate        
Next cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...