Subscript out of range vba excel ошибка
Как правило, практикующие ПК и сотрудники службы поддержки знают «Subscript out of range» как форму «ошибки во время выполнения». Когда дело доходит до программного обеспечения, как Windows Operating System, инженеры могут использовать различные инструменты, чтобы попытаться сорвать эти ошибки как можно скорее. Ошибки, такие как ошибка 9, иногда удаляются из отчетов, оставляя проблему остается нерешенной в программном обеспечении.
Почему возникает ошибка времени выполнения 9?
В большинстве случаев вы увидите «Subscript out of range» во время загрузки Windows Operating System. Вот три наиболее распространенные причины, по которым происходят ошибки во время выполнения ошибки 9:
Ошибка 9 Crash - Ошибка 9 может привести к полному замораживанию программы, что не позволяет вам что-либо делать. Если данный ввод недействителен или не соответствует ожидаемому формату, Windows Operating System (или OS) завершается неудачей.
Утечка памяти «Subscript out of range» - если есть утечка памяти в Windows Operating System, это может привести к тому, что ОС будет выглядеть вялой. Есть некоторые потенциальные проблемы, которые могут быть причиной получения проблем во время выполнения, с неправильным кодированием, приводящим к бесконечным циклам.
Ошибка 9 Logic Error - логическая ошибка возникает, когда компьютер производит неправильный вывод, даже если вход правильный. Это видно, когда исходный код Microsoft Corporation включает дефект в анализе входных данных.
Subscript out of range проблемы часто являются результатом отсутствия, удаления или случайного перемещения файла из исходного места установки Windows Operating System. В большинстве случаев скачивание и замена файла Microsoft Corporation позволяет решить проблему. Мы также рекомендуем выполнить сканирование реестра, чтобы очистить все недействительные ссылки на Subscript out of range, которые могут являться причиной ошибки.
Обнаруженные проблемы Subscript out of range с Windows Operating System включают:
- «Ошибка программы Subscript out of range. «
- «Ошибка программного обеспечения Win32: Subscript out of range»
- «Subscript out of range столкнулся с проблемой и закроется. «
- «Subscript out of range не может быть найден. «
- «Subscript out of range не может быть найден. «
- «Проблема при запуске приложения: Subscript out of range. «
- "Файл Subscript out of range не запущен."
- "Отказ Subscript out of range."
- "Неверный путь к приложению: Subscript out of range."
Причины ошибок в файле Subscript out of range
Проблемы Subscript out of range могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Subscript out of range, или к вирусам / вредоносному ПО.
Более конкретно, данные ошибки Subscript out of range могут быть вызваны следующими причинами:
Пример индекса VBA Excel вне диапазона
Ниже приведены различные примеры VBA Subscript вне диапазона в Excel.
Вы можете скачать этот VBA Subscript вне шаблона Excel здесь - VBA Subscript вне шаблона Excel
Индекс VBA вне диапазона - пример № 1
Сначала рассмотрим простой пример. Для этого нам нужно перейти в окна VBA и добавить новый модуль, выбрав пункт меню «Вставка», как показано ниже.
Мы получим белое пустое окно модуля. Это где мы должны сделать работу кодирования.
Теперь напишите «Подкатегория выполняемой функции», для лучшей практики сохраните имя функции в «Подкатегории», как мы делали здесь для VBA Subscript вне диапазона.
Код:
Здесь, в Excel, у нас есть только один лист с именем «Лист1», как показано ниже.
Но мы напишем код для выбора листа, который даже не добавлен, и посмотрим, что произойдет.
Теперь перейдите в окно VBA и напишите Sheets (2), а затем выберите функцию Select, как показано ниже. Это означает, что мы выбираем последовательность листов 2- й позиции с помощью функции выбора.
Код:
Это показывает, что мы пытаемся выбрать тот лист, который не существует. Если мы добавим новый лист или изменим последовательность листов в коде со 2- го на 1- й, то мы можем получить успешный запуск кода. Давайте добавим еще один лист и посмотрим, что произойдет.
Теперь снова запустите код. И поскольку мы не увидели никакой ошибки, это означает, что наш код завершает успешный запуск.
Индекс VBA вне диапазона - пример № 2
В другом примере мы снова увидим простой код активации рабочего листа. Для этого снова напишем код. Начните писать Подкатегорию в названии выполняемой функции или в любом другом имени, как показано ниже.
Код:
Теперь с помощью Worksheet мы активируем Sheet1, как показано ниже.
Код:
Снова скомпилируйте и запустите код.
Как мы видим выше, даже если наш полный процесс и способ написания кода верны, но мы взяли правильное имя листа как «Лист 1». Который на самом деле не имеет места между «Лист1».
Это показывает, что все еще есть шансы получить ошибку, если не написать или написать правильное имя листа или имя книги.
Индекс VBA вне диапазона - пример № 3
В этом примере мы увидим, как выбор неправильного диапазона массива может создать и показать ошибку времени выполнения 9. Начать снова писать подкатегорию в имени выполняемой функции, как показано ниже.
Код:
Теперь с помощью DIM определите массив любого размера и передайте его в строку или целое число. Что зависит от того, что мы хотим хранить в массиве, числа или текст.
Здесь мы рассмотрели массив 2 × 3 как String, как показано ниже.
Код:
Таким образом, он сформирует таблицу для 2 строк и 3 столбцов, и мы можем хранить любые значения в соответствии с нашими потребностями. Поскольку мы выбрали строку, то мы будем рассматривать текст или алфавиты в нем.
Теперь во второй строке кода выберите созданный массив, но с дополнительным или большим столбцом и назначьте текст как ABC или любой другой текст по вашему выбору. Здесь мы выбрали массив 2 × 5, как показано ниже.
Код:
Причина получения этой ошибки заключается в том, что мы выбрали неверный диапазон массива в пределах 2 дополнительных столбцов от 2 × 3 до 2 × 5, что выходит за пределы кода. Теперь, если мы снова выберем правильный диапазон массива как 2 × 3 и посмотрим, что произойдет.
После компиляции и запуска кода. Мы увидим, что не получили никакой ошибки, что означает, что наш код был успешно выполнен.
Плюсы Excel VBA Subscript вне диапазона
- Индекс VBA вне диапазона позволяет нам узнать, что за ошибка произошла. Так что мы можем конкретно найти решение полученного кода ошибки.
- Поскольку индекс VBA выходит за пределы диапазона «Ошибка времени выполнения 9», очень полезно знать, какая ошибка произошла в Excel.
То, что нужно запомнить
- Рекомендуется использовать подкатегорию в имени выполняемой функции с последовательностью кода, чтобы ее было легко отслеживать.
- Сохраните файл как Macro-Enabled Workbook, чтобы избежать потери написанного кода.
- Если у вас огромные строки кода, лучше скомпилировать каждую строку кода одну за другой, нажав клавишу F8. Этот метод компилирует каждый шаг кода, чтобы мы могли сразу узнать, какая часть кода действительно имеет ошибку с первого раза.
Рекомендуемые статьи
Это было руководство по Excel VBA Subscript вне диапазона. Здесь мы обсудили причину возникновения ошибки VBA Subscript out of Range (Ошибка времени выполнения 9), а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Почему выдает ошибку Почему выдает ошибку subscript out of range?
во всех строка где находится ActiveWorkbook.Worksheets(List).Cells(k, 2)
(не засунул под <сode>сode> т.к все русское меняет на иероглифы)
Option Base 1
Dim Ном1 As Integer, Группа1 As Integer, Ячейка As Integer
Dim Инф1 As Integer, Мат1 As Integer, ПСП1 As Integer
Dim ПТАКТ1 As Integer, Колдв As Integer
Dim Србал(1 To 4) As Currency
Public Фам1 As String
Public List As String
Public k As Integer
Private Sub Дан_Экзамен_Initialize()
k = 4
Workbooks.Add
Ном1 = ActiveWorkbook.Worksheets(List).Cells(k, 1)
Группа1 = ActiveWorkbook.Worksheets(List).Cells(k, 2)
Фам1 = ActiveWorkbook.Worksheets(List).Cells(k, 3)
Инф1 = ActiveWorkbook.Worksheets(List).Cells(k, 4)
Мат1 = ActiveWorkbook.Worksheets(List).Cells(k, 5)
ПСП1 = ActiveWorkbook.Worksheets(List).Cells(k, 6)
ПТАКТ1 = ActiveWorkbook.Worksheets(List).Cells(k, 7)
Колдв = ActiveWorkbook.Worksheets(List).Cells(k, 8)
Номер.Value = Ном1
Ввод_Фам.Value = Фам1
Ввод_Группа.Value = Группа1
Выбор_оценка.Value = Инф1
Выбор_Оценка1.Value = Мат1
Выбор_Оценка2.Value = ПСП1
Выбор_Оценка3.Value = ПТАКТ1
Ввод_дв.Value = Колдв
For j = 1 To 4
Србал(j) = ActiveWorkbook.Worksheets(List).Cells(14, j + 3)
Next j
Вывод_ср1.Value = Србал(1)
Вывод_ср2.Value = Србал(2)
Вывод_ср3.Value = Србал(3)
Вывод_ср4.Value = Србал(4)
Выбор_оценка.RowSource = "k5:k8"
Выбор_Оценка1.RowSource = "k5:k8"
Выбор_Оценка2.RowSource = "k5:k8"
Выбор_Оценка3.RowSource = "k5:k8"
End Sub
Private Sub Выбор_Оценка_Change()
Инф1 = Выбор_оценка.Value
End Sub
Private Sub Выбор_Оценка1_Change()
Мат1 = Выбор_Оценка1.Value
End Sub
Private Sub Выбор_Оценка2_Change()
ПСП1 = Выбор_Оценка2.Value
End Sub
Private Sub Выбор_Оценка3_Change()
ПТАКТ1 = Выбор_Оценка3.Value
End Sub
Private Sub Кн_Ввод_Click()
ActiveWorkbook.Worksheets(List).Cells(k, 4) = Инф1
ActiveWorkbook.Worksheets(List).Cells(k, 5) = Мат1
ActiveWorkbook.Worksheets(List).Cells(k, 6) = ПСП1
ActiveWorkbook.Worksheets(List).Cells(k, 7) = ПТАКТ1
For i = 4 To 7
If ActiveWorkbook.Worksheets(List).Cells(k, i) = 2 Then Колдв = Колдв + 1
Next i
ActiveWorkbook.Worksheets(List).Cells(k, 8) = Колдв
Ввод_дв.Value = Колдв
For j = 1 To 4
Србал(j) = 0
For M = 4 To 13
Србал(j) = Србал(j) + ActiveWorkbook.Worksheets(List).Cells(M, j + 3)
Next M
Србал(j) = Србал(j) / 10
ActiveWorkbook.Worksheets(List).Cells(14, j + 3) = Србал(j)
Next j
Вывод_ср1.Value = Србал(1)
Вывод_ср2.Value = Србал(2)
Вывод_ср3.Value = Србал(3)
Вывод_ср4.Value = Србал(4)
End Sub
Private Sub Кн_Выход_Click()
Dim M As String, T As String, R As String
Dim St As String
M = "Хотите закончить работу?"
St = vbYesNo + vbCritical + vbDefaultButton2
T = "Выход из программы!"
R = MsgBox(M, St, T)
If R = vbYes Then
Unload Me
End If
End Sub
Private Sub Кн_Редактировать_Click()
Номер.Enabled = True
Ввод_Фам.Enabled = True
Выбор_оценка.Enabled = True
Выбор_Оценка3.Enabled = True
Выбор_Оценка1.Enabled = True
Выбор_Оценка2.Enabled = True
Ввод_Группа.Enabled = True
End Sub
Private Sub Счет_SpinDown()
Номер.Enabled = False
Ввод_Фам.Enabled = False
Выбор_оценка.Enabled = False
Выбор_Оценка3.Enabled = False
Выбор_Оценка1.Enabled = False
Выбор_Оценка2.Enabled = False
Ввод_Группа.Enabled = False
If k > 4 Then k = k + 1
Ном1 = ActiveWorkbook.Worksheets(List).Cells(k, 1)
Группа1 = ActiveWorkbook.Worksheets(List).Cells(k, 2)
Фам1 = ActiveWorkbook.Worksheets(List).Cells(k, 3)
Инф1 = ActiveWorkbook.Worksheets(List).Cells(k, 4)
Мат1 = ActiveWorkbook.Worksheets(List).Cells(k, 5)
ПСП1 = ActiveWorkbook.Worksheets(List).Cells(k, 6)
ПТАКТ1 = ActiveWorkbook.Worksheets(List).Cells(k, 7)
Колдв = ActiveWorkbook.Worksheets(List).Cells(k, 8)
Номер.Value = Ном1
Ввод_Фам.Value = Фам1
Ввод_Группа.Value = Группа1
Выбор_оценка.Value = Инф1
Выбор_Оценка1.Value = Мат1
Выбор_Оценка2.Value = ПСП1
Выбор_Оценка3.Value = ПТАКТ1
Ввод_дв.Value = Колдв
End Sub
Private Sub Счет_SpinUp()
Номер.Enabled = False
Ввод_Фам.Enabled = False
Выбор_оценка.Enabled = False
Выбор_Оценка3.Enabled = False
Выбор_Оценка1.Enabled = False
Выбор_Оценка2.Enabled = False
Ввод_Группа.Enabled = False
Ошибка VBA Subscript out of range возникает из-за того, что объект, к которому мы хотим получить доступ, не существует. Это тип ошибки в кодировании VBA и «Ошибка времени выполнения 9». Для написания эффективного кода важно понимать концепции, и еще более важно понимать ошибку вашего кода VBA для эффективной отладки кода.
Если вы и ваша ошибка кодирования не знаете, что это за ошибка, когда вас нет.
Врач не может давать лекарства своему пациенту, не зная о болезни. В то время как врач и пациент знают, что есть заболевание (ошибка), важно понимать заболевание (ошибку) как предоставление ей лекарства. Если вы полностью понимаете ошибку, гораздо проще найти решение.
Другая причина может заключаться в том, что на вашем компьютере нет стандартного принтера. Есть несколько решений, чтобы решить эту проблему Ошибка 9 во время выполнениятак что попробуйте все в правильном порядке.
Добавление принтера по умолчанию
- Подключите принтер к компьютеру, подключите шнур питания и включите его.
- Перейдите в «Пуск»> «Панель управления»> «Принтеры и факсы».
- Щелкните «Добавить принтер» и следуйте инструкциям на экране, чтобы добавить принтер по умолчанию.
Проверьте массивы
Возможно, вы установили неверное значение для элемента массива. Поэтому рекомендуется перепроверить значение, которое вы определили для элемента массива, и убедиться, что оно правильное. Также обязательно проверьте декларацию таблицы и проверьте верхний и нижний пределы. Если размер таблиц был изменен, обязательно используйте функции LBound и UBound для условий доступа. Проверьте правильность имени переменной, если индекс является переменной.
Определить количество элементов
В некоторых случаях вы, возможно, не определили количество элементов в вашем коде, которые будут вызывать ошибку. Рекомендуется указывать количество элементов в таблице с помощью функций Dim или ReDim.
Как избежать ошибки «Индекс ошибки вне допустимого диапазона» в VBA
Избегайте использования функций, интегрированных в Excel: ActiveWorkbook, ActiveSheet и Selection: введите возвращаемые значения и предпочитайте квалифицированные выражения.
Ноябрьское обновление 2021:
Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows - нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:
Используйте интегрированные только один раз и только в большинстве внешних макросов (подпрограмм) и захватывайте при запуске макроса, например
set wkb = ActiveWorkbook
set wks = ActiveSheet
Набор соли = выбор
Во время и в макросах эти интегрированные имена не являются надежными, но возвращаемые значения записываются, например,
Установите wkb = Workbooks.add 'вместо Workbooks.add без ввода возвращаемого значения.
wkb.Activate 'вместо Activeworkbook.Activate
Также попробуйте использовать квалифицированные выражения, например
wkb.Sheets («Sheet3»). name = «foo» 'вместо Sheets («Sheet3»). name = «foo».
or
Установите newWks = wkb.Sheets.Add.
newWks.name = «bar» 'вместо ActiveSheet.name = «bar».
Используйте квалифицированные выражения, например
newWks.name = «bar» 'вместо «xyz.Select», за которым следует Selection.name = «bar».
Эти методы обычно работают лучше, дают менее запутанные результаты, более устойчивы к рефакторингу (например, перемещают строки кода внутри и между методами) и работают лучше во всех версиях Excel. Например, выбор изменяется по-разному от одной версии Excel к другой во время выполнения макроса.
Также обратите внимание, что вы, вероятно, обнаружите, что использование более квалифицированных выражений не требует активации почти такого же количества функций. (Это может означать, что экран меньше мигает для пользователя.) Таким образом, вся строка Windows (выражение). Activate может быть просто удален, а не заменен wkb. Активировать на всех.
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Читайте также: