Проблемы

Если вы используете свойство Location или расположение. адрес вертикальных или горизонтальных разрывов страниц в макросе Microsoft Visual Basic для приложений, может появиться следующее сообщение об ошибке:

Ошибка во время выполнения "9": подстрочный индекс выходит за пределы диапазона

Причина

Эта проблема может возникать, если выполняются указанные ниже условия.

  • Активная ячейка находится над горизонтальным разрывом страницы или слева от вертикальной разрыва страницы, на который ссылается индекс HPageBreaks или VPageBreaks .

  • Расположение разрыва страницы по вертикали или по горизонтали выходит за пределы экрана справа от видимого окна или под видимым окном книги.

  • Макросы Visual Basic для приложений в Microsoft Excel похожи на приведенный ниже код.

    Sub TestHorizontal()    ActiveSheet.Range("CZ1000").Value = 1    MsgBox ActiveSheet.HPageBreaks.Count    MsgBox ActiveSheet.HPageBreaks(1).Location.Address    MsgBox ActiveSheet.HPageBreaks(2).Location.AddressEnd Sub Sub TestVertical()    ActiveSheet.Range("CZ1000").Value = 1    MsgBox ActiveSheet.VPageBreaks.Count    MsgBox ActiveSheet.VPageBreaks(1).Location.Address    MsgBox ActiveSheet.VPageBreaks(2).Location.Address    MsgBox ActiveSheet.VPageBreaks(3).Location.AddressEnd Sub

Обходное решение

Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, не выполняя либо подразумеваемых. Сюда относится, но не ограничивается подразумеваемым гарантийным обязательством о товаре или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который вы продемонстрировали, и с инструментами, используемыми для создания и отладки процедур. Специалисты службы поддержки Майкрософт могут объяснить особенности конкретных процедур, но они не изменяют эти примеры для предоставления дополнительных функций или создания процедур, удовлетворяющих конкретным требованиям. Чтобы избежать этой проблемы, добавьте код для выделения последней ячейки на листе перед тем, как в коде используется свойство Location для горизонтальных или вертикальных разрывов страниц. Например, чтобы выделить конечную ячейку с помощью следующего кода, используйте свойство Location и повторно Выделите исходную активную ячейку.

Sub CheckPageBreaks()    'Set object "currcell" equal to active cell.    Set currcell = ActiveCell        'Select the last cell on the worksheet that has data.    Range("IV65536").Select        'Include code with Location property here.    x = ActiveSheet.HPageBreaks(2).Location.Address    MsgBox x    'Example sets x equal to address of second horizontal page break.    'Then message box displays the address of the page break.        'Select original active cell.    currcell.SelectEnd Sub

После вычисления свойства Location вы можете снова выделить исходную активную ячейку. Если вы используете код для прокрутки между первой и последней ячейками или выберите последнюю ячейку и сразу снова выберите начальную ячейку, это может привести к возникновению ошибки. Чтобы временное решение было эффективным, необходимо перерисовать экран, а для него будет вычислено свойство Location . Если вы используете вышеприведенный код с

Application.ScreenUpdating = False

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

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Дополнительная информация

Если вы используете метод счёт с помощью свойства VPageBreaks или HPageBreaks , вы можете получить результат, равный нулю. Это может быть вызвано условиями, перечисленными в разделе "причина". При отображении разрыва страницы метод счёт может дать правильный ответ. Метод Count для вертикальных и горизонтальных разрывов страниц может привести к ожидаемому результату, если разрыв страницы находится ближе к видимой части окна книги. Чтобы получить ожидаемый счет, можно использовать обходное решение, заданное ранее. Разрывы страниц, находящиеся справа от окна книги или под окном книги, могут включать метод Count для работы, а также разрыв страницы, если расстояние от него до разрыва страницы меньше одной половины расстояния между разрывами страницы.

Ссылки

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

213637 Использование "On Error" для обработки ошибок в макросе

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?

Спасибо за ваш отзыв!

×