Ошибка выполнения 9 Excel, как исправить
Обновлено: 21.11.2024
Ошибка выполнения 9 появляется при попытке скопировать лист модуля Microsoft Visual Basic для приложений в процедуре макроса Visual Basic. В основном это означает, что Visual Basic не может прочитать нужные вам команды/настройки, что приводит к тому, что ваша система показывает ошибку, которую вы видите.
Эта ошибка обычно отображается следующим образом:
Ошибка выполнения "9":
Нижний индекс вне допустимого диапазона
Что вызывает ошибку выполнения 9
Основная причина этой ошибки заключается в том, что вы пытаетесь использовать метод «копирования» для копирования некоторых листов в книгу Excel. Если ваш код выглядит примерно так, вероятно, проблема в нем:
Вы также можете получить сообщение об ошибке, если «лист модуля», который вы пытаетесь скопировать, был вставлен вручную в Microsoft Excel; или если принтер не был определен на вашем компьютере. Чтобы решить проблему с ошибкой выполнения 9, рекомендуется добавить принтер в конфигурацию вашей системы, установить регулярные обновления Windows и очистить реестр вашей системы. Вот что вам нужно сделать:
Как исправить ошибку выполнения 9
Шаг 1. Добавьте принтер в систему
Часто бывает так, что Visual Basic/Excel не понимают, установлен ли принтер в вашей системе или нет. Если в настоящее время к вашему компьютеру не добавлен ни один принтер, попробуйте добавить его, чтобы устранить ошибку выполнения 9. Вот что вы можете сделать:
- Нажмите "Пуск", выберите "Панель управления".
- Дважды щелкните Принтеры и факсы, чтобы открыть соответствующее окно.
- Дважды щелкните "Добавить принтер", чтобы запустить мастер добавления принтеров, который поможет вам, следуя инструкциям, которые он вам предоставит.
Шаг 2. Обновите Windows
Ошибка выполнения 9 часто возникает из-за того, что в Windows нет необходимых файлов и обновлений, которые помогают поддерживать ее бесперебойную работу. Чтобы убедиться, что это не вызывает каких-либо проблем на вашем ПК, вам необходимо обновить Windows, перейдя в «Панель управления», а затем нажав «Центр обновления Windows». Убедитесь, что вы разрешили установку всех обновлений на свой компьютер.
Шаг 3. Поиск вирусов
Вирусы представляют собой большую проблему для Windows, поскольку они постоянно вызывают различные проблемы на вашем компьютере. Одной из основных причин ошибки времени выполнения 9 является то, как многие вирусы имеют тенденцию заражать основные программные файлы, необходимые для запуска Windows. Это приводит к тому, что файлы становятся нечитаемыми, из-за чего Windows не может обрабатывать нужные вам команды, что приводит к отображению ошибки. Чтобы убедиться, что это не проблема, вам необходимо удалить все вирусы, которые могут быть в вашей системе, с помощью антивирусного сканера. Рекомендуемый нами антивирусный сканер — программа под названием XoftSpy
Шаг 4. Очистите реестр
Реестр является серьезной причиной ошибки Runtime 9 благодаря тому, что он постоянно используется вашей системой. Это большая проблема, так как это означает, что Windows постоянно не может использовать файлы, необходимые для запуска, что замедляет ее работу и вызывает такие ошибки, как ошибка Runtime 9. Чтобы решить эту проблему, вам нужно иметь возможность использовать «очиститель реестра» для исправления различных ошибок, находящихся внутри реестра. Вы можете увидеть наш рекомендуемый очиститель реестра ниже:
Эта проблема может возникнуть, если выполняются следующие условия:
Активная ячейка находится над горизонтальным разрывом страницы или слева от вертикального разрыва страницы, на который ссылается индекс HPageBreaks или VPageBreaks.
Место разрыва страницы по вертикали или горизонтали находится за пределами экрана справа от видимого окна или под видимым окном книги.
Вы используете макрос Visual Basic для приложений в Microsoft Excel, аналогичный следующему коду:
Временное решение
Microsoft предоставляет примеры программирования только для иллюстрации, без явных или подразумеваемых гарантий. Это включает, но не ограничивается, подразумеваемые гарантии товарного состояния или пригодности для конкретной цели. В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы обеспечить дополнительную функциональность или создавать процедуры в соответствии с вашими конкретными требованиями.
Чтобы предотвратить эту проблему, добавьте код, чтобы выбрать последнюю ячейку, использованную на листе, прежде чем код использует свойство Location горизонтальных или вертикальных разрывов страниц. Например, используйте следующий код, чтобы выбрать конечную ячейку, используйте свойство Location, а затем повторно выберите исходную активную ячейку:
После того, как свойство Location вычислено, вы можете снова выбрать исходную активную ячейку.Если вы используете код для прокрутки между первой и последней ячейкой или выбираете последнюю ячейку и сразу же повторно выбираете начальную ячейку, ошибка все равно может возникнуть. Экран должен перерисовываться, а свойство Location должно быть рассчитано, чтобы обходной путь был эффективным. Если вы используете приведенный выше код с
чтобы предотвратить перерисовку экрана, проблема по-прежнему возникает.
Статус
Microsoft подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе "Относится к".
Дополнительная информация
Если вы используете метод Count со свойством VPageBreaks или HPageBreaks, вы можете получить нулевой результат. Это происходит при условиях, перечисленных в разделе «Причина». Если разрыв страницы виден, метод Count может дать правильный ответ. Метод Count для вертикальных или горизонтальных разрывов страниц может дать ожидаемый результат, если разрыв страницы находится рядом с видимой частью окна книги. Приведенный ранее обходной путь можно использовать для получения ожидаемого количества.
Разрывы страниц, которые находятся справа от окна рабочей книги или под окном рабочей книги, могут позволить работать методу Count и найти этот разрыв страницы, если расстояние от окна до разрыва страницы меньше половины расстояние между разрывами страниц.
Ссылки
Для получения дополнительной информации о том, как перехватывать ошибки в макросе, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
Нижний индекс вне диапазона — это ошибка, с которой мы сталкиваемся в VBA, когда пытаемся сослаться на что-то или на переменную, которая не существует в коде, например, предположим, что у нас нет переменной с именем x, но мы используйте функцию msgbox для x, мы столкнемся с ошибкой нижнего индекса вне диапазона.
Ошибка VBA Subscript out of range возникает из-за того, что объект, к которому мы пытаемся получить доступ, не существует. Это тип ошибки в кодировании VBA Кодирование VBA Код VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. читать далее , и это «Ошибка времени выполнения 9». Важно понимать концепции написания эффективного кода, и еще более важно понимать ошибки вашего кода VBA. Ошибка вашего кода VBA. Обработка ошибок VBA относится к устранению различных ошибок, возникающих при работе с VBA. узнайте больше, чтобы эффективно отлаживать код.
Если у вас ошибка в коде, и вы не знаете, что это за ошибка, когда вас нет.
Врач не может дать лекарство своему пациенту, не зная, что это за болезнь. Конечно, и врачи, и пациенты знают, что есть болезнь (ошибка), но важнее понять болезнь (ошибку), чем давать от нее лекарство. Если вы можете полностью понять ошибку, то найти решение будет намного проще.
В аналогичной заметке в этой статье мы увидим одну из важных ошибок, с которыми мы обычно сталкиваемся регулярно, то есть ошибку «Нижний индекс вне диапазона» в Excel VBA.
Что такое ошибка нижнего индекса вне диапазона в Excel VBA?
Например, если вы ссылаетесь на лист, который не является рабочей книгой, мы получим ошибку времени выполнения 9: "Нижний индекс вне диапазона".
Если вы нажмете кнопку «Конец», подпроцедура завершится, если вы нажмете «Отладка», вы перейдете к строке кода, где произошла ошибка, а справка приведет вас на страницу веб-сайта Microsoft.< /p>
Почему возникает ошибка нижнего индекса вне диапазона?
Как я уже говорил, как врач важно найти покойника, прежде чем думать о лекарстве. Ошибка VBA Subscript out of range возникает, когда строка кода не читает введенный нами объект.
Например, посмотрите на изображение ниже. У меня есть три листа с именами Лист1, Лист2, Лист3.
Теперь в коде я написал код для выбора листа «Продажи».
Код:
Если я запущу этот код с помощью клавиши F5 или вручную, я получу ошибку времени выполнения 9: "Нижний индекс вне диапазона".
Это связано с тем, что я пытался получить доступ к объекту рабочего листа "Продажи", который не существует в рабочей книге.Это ошибка времени выполнения, поскольку эта ошибка возникла при выполнении кода.
Еще одна распространенная ошибка нижнего индекса возникает, когда мы ссылаемся на книгу, которой там нет. Например, посмотрите на приведенный ниже код.
Код:
Приведенный выше код говорит, что переменная WB должна быть равна рабочей книге «Salary Sheet.xlsx». На данный момент эта книга не открывается на моем компьютере. Если я запущу этот код вручную или с помощью клавиши F5, я получу ошибку времени выполнения 9: «Нижний индекс вне диапазона».
Это связано с тем, что книга, о которой я говорю, либо не открыта, либо вообще не существует.
Ошибка индекса VBA в массивах
Когда вы объявляете массив как динамический массив и не используете слово DIM или REDIM в VBA REDIM В VBA Оператор VBA Redim увеличивает или уменьшает объем памяти, доступный для переменной или массива. Если с этим оператором используется Preserve, создается новый массив другого размера; в противном случае изменяется размер массива текущей переменной. Чтобы определить длину массива, мы обычно получаем ошибку VBA Subscript out of range. Например, посмотрите на приведенный ниже код.
Код:
В приведенном выше примере я объявил переменную как массив, но не назначил начальную и конечную точки; скорее, я сразу присвоил первому массиву значение 25.
Если я запущу этот код с помощью клавиши F5 или вручную, мы получим ошибку времени выполнения 9: "Нижний индекс вне диапазона".
Чтобы решить эту проблему, мне нужно присвоить длину массива с помощью слова Redim.
Код:
Этот код не выдает никаких ошибок.
Как показать ошибки в конце кода VBA?
Если вы не хотите видеть ошибку во время работы кода, но вам нужен список ошибок в конце, вам нужно использовать обработчик ошибок «Возобновление ошибки». Посмотрите на приведенный ниже код.
Код:
Как мы видели, этот код выдает ошибку времени выполнения 9: "Подстрочный индекс вне диапазона в Excel VBA. Но я должен использовать обработчик ошибок On Error Resume Next в VBA On Error Resume Next в VBA VBA On Error Resume Statement — это аспект обработки ошибок, используемый для игнорирования строки кода, из-за которой произошла ошибка, и продолжения со следующей строки справа после строки кода с ошибкой. читайте больше во время выполнения кода. Никаких сообщений об ошибках мы не получим. Вместо этого в конце окна сообщения отображается описание ошибки, подобное этому.
Рекомендуемые статьи
Это руководство по индексу VBA вне допустимого диапазона. Здесь мы узнали об ошибке, называемой Subscript out of range (ошибка времени выполнения «9») в Excel VBA, а также с практическими примерами и загружаемым шаблоном. Ниже вы можете найти несколько полезных статей по Excel VBA –
Устранение неполадок с простым макросом Excel, если появляется сообщение об ошибке. Используйте кнопку «Отладка», чтобы найти и исправить небольшую проблему в коде. Как исправить проблему, когда клавиша F8 перестает работать при пошаговом выполнении макроса. Что делать, если список Project Explorer отсутствует
Кнопка отладки сообщения об ошибке
Иногда при попытке запустить макрос появляется сообщение об ошибке, например ошибка "Ошибка выполнения '9': нижний индекс вне допустимого диапазона", показанная ниже.
В этом сообщении об ошибке доступны 3 кнопки: "Завершить", "Отладка" и "Справка".
- Чтобы остановить макрос, нажмите кнопку "Завершить".
- Чтобы получить информацию об ошибке, нажмите «Справка». В этом случае вы окажетесь на странице веб-сайта Microsoft со списком возможных причин и решений для ошибки Subscript Out of Range.
- Чтобы перейти к VBE и попытаться решить проблему, нажмите кнопку "Отладка".
Отладка макроса
В этом примере был записан макрос, чтобы перейти на лист с именем "Основной", а затем выбрать ячейку C3 на этом листе. При запуске макроса появляется указанное выше сообщение об ошибке.
Вот код VBA для макроса GoToMainSheet:
Мы воспользуемся кнопкой "Отладка" для устранения проблемы:
- В сообщении об ошибке нажмите кнопку "Отладка".
- Откроется VBE с макросом GoToMain Sheet, а строка кода будет выделена желтым цветом с желтой стрелкой на поле слева.
- Excel показал сообщение об ошибке, поскольку не может завершить выделенную строку кода.
- Загляните в окно Project Explorer и проверьте список листов активной книги.
- Есть 3 листа с названиями "Введение", "Лист2" и "Лист3" – листа с названием "Основной" нет.
Мы остановим отладчик и исправим код.
Код перестает выполняться, и желтая подсветка исчезает.
Исправить код
Далее отредактируйте код, чтобы изменить имя листа.
Решение 1. Не рекомендуется
- В строке кода вы можете заменить "Main" на "Intro", которое является текущим названием первого листа в книге.
- Однако при таком решении код может снова показать ошибку, если кто-то изменит имя листа в будущем.
- Это не лучшее решение
Решение 2. Рекомендуется
- Вместо имени на вкладке "Лист" мы будем использовать кодовое имя листа. Маловероятно, что он будет изменен кем-либо, кроме программиста.
- В обозревателе проектов вы можете увидеть кодовое имя листа, за которым следует имя, отображаемое на вкладке листа.
- Это решение лучше, поскольку код будет продолжать выполняться, даже если изменить имя на вкладке листа.
Сохраните изменения и протестируйте макрос
- На панели инструментов VBE нажмите кнопку "Сохранить", затем закройте окно VBE и вернитесь в Excel.
- Запустите макрос еще раз, и он должен работать правильно, без ошибок.
Ключ F8 перестает работать
При отладке кода Excel VBA можно использовать клавишу F8 или команду "Пошаговый переход" для пошагового выполнения кода по одной строке за раз.
Однако в Excel 2010 вы можете столкнуться с проблемой, когда клавиша F8 (или Шаг за шагом) перестает работать на полпути к выполнению процедуры. Иногда это происходит после того, как код открывает другой файл. Вместо остановки на следующей строке кода выполняется до конца процедуры или до следующей точки останова.
Чтобы решить эту проблему, вы можете внести следующие изменения в реестр. Как всегда, сделайте резервную копию реестра, прежде чем вносить какие-либо изменения, и попробуйте это на свой страх и риск!
Спасибо Россу Коннеллу за то, что он поделился этим решением, которое он узнал от службы поддержки Microsoft.
Изменение в реестре влияет на отладку RPC. Подробнее об этом можно прочитать на веб-сайте Microsoft: Отладка COM-клиентов и серверов с помощью отладки RPC
- Закрыть Excel
- Сделайте резервную копию файла реестра, затем откройте реестр — инструкции есть на веб-сайте Microsoft
- Перейдите к соответствующему ключу реестра:
- Для 32-разрядной версии Office в 64-разрядной версии Windows перейдите в раздел реестра:
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VBA
- Для 32-разрядной версии Office в 32-разрядной версии Windows перейдите в раздел реестра:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA
- Для 64-разрядной версии Office в 64-разрядной версии Windows перейдите в раздел реестра:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VBA
Отсутствуют папки Project Explorer
При работе в редакторе Visual Basic обычно отображается проводник проектов, в котором отображается список всех открытых проектов VBA.
Нажмите кнопку + или - слева от имени проекта, чтобы открыть и закрыть список объектов для этого проекта.
ПРИМЕЧАНИЕ. Если проект защищен и не был разблокирован во время текущего сеанса, вам будет предложено ввести пароль при нажатии кнопки +.
Показать содержимое папки
Затем нажмите кнопку + или - слева от имени папки, чтобы открыть и закрыть список объектов для этой папки.
Отсутствуют папки
Иногда папки проводника проекта могут исчезнуть, а под названием проекта появится алфавитный список объектов книги.
Чтобы снова отобразить объекты, сгруппированные в папки, выполните следующие действия:
- Нажмите на название проекта, чтобы открыть его.
- На панели инструментов в верхней части окна Project Explorer нажмите кнопку "Переключить папки".
Папки снова появятся для всех проектов, а объекты сгруппированы в папки.
Получить образец файла
Кнопка отладки. Чтобы протестировать шаги отладки VBA, получите пример файла кнопки отладки сообщения об ошибке. Заархивированный файл Excel имеет формат xlsm и содержит макрос с именем GoToMainSheet. Чтобы протестировать макрос, обязательно включите макросы при открытии книги
Читайте также: