У меня есть рабочая книга MS Excel, содержащая множество рабочих листов.MS Excel «индекс вне диапазона» при копировании рабочих листов в новую рабочую книгу
Пользователи вводят данные на одном из рабочих листов и затем нажимают кнопку, которая запускает код VBA. На основе условий, полученных из введенных пользователем данных, мне нужно создать новую Рабочую книгу, содержащую копии некоторых рабочих листов.
Затем код перебирает (цикл) через рабочие листы в источнике Workbook и добавить имена соответствующих рабочих листов в строку ...
Dim worksheetsToCopy As String
worksheetsToCopy = worksheetsToCopy & """" & "Admin Tab" & """" & ", "
После цикла завершения я проверить переменную с Debug .print worksheetsToCopy , который дает мне следующий результат в окне Immediate: "Tab Admin", "Home Tab", "Панель управления",
Тогда я раздеванием из последнего "" с
worksheetsToCopy = Mid(worksheetsToCopy, 1, InStrRev(worksheetsToCopy, ",") - 1)
Затем, когда я пытаюсь скопировать рабочие листы, содержащиеся в переменной worksheetsToCopy со следующей строки кода, я получаю сообщение об ошибке выполнения 9 - Subscript вне диапазона:
Sheets(Array(worksheetsToCopy)).Copy
Однако, когда я бегу та же команда, но вручную ввести имена вкладок в кавычки и запятые как ниже, он отлично работает:
Sheets(Array("Admin Tab", "Home Tab", "Dashboard")).Copy
Почему я получаю сообщение об ошибке выполнения 9 - «Подстрочный из диапазона» ошибка с первым утверждением.
Что я делаю неправильно или не хватает? Любая помощь будет оценена ...
Ваш код эквивалентен 'Sheets (Array ("" "Администратор Tab"», "" Home Tab «", "Панель инструментов" ")). Копировать', а не' Листы (Array («вкладка« Администратор »,« Главная вкладка »,« Панель мониторинга »)). См. Ответ Dawid для создания массива из строки. –