Индекс выходит за пределы допустимого диапазона (ошибка 9) Subscript out of range (Error 9)
К элементам массива и коллекции можно обращаться только в пределах их допустимых диапазонов. Elements of arrays and members of collections can only be accessed within their defined ranges. Эта ошибка имеет следующие причины и способы решения: This error has the following causes and solutions:
Вы обратились к несуществующему элементу массива. You referenced a nonexistent array element. Возможно, заданный индекс выходит за пределы диапазона допустимых индексов или размеры массива не соответствуют параметрам, присвоенным на данном этапе приложения. The subscript may be larger or smaller than the range of possible subscripts, or the array may not have dimensions assigned at this point in the application. Проверьте верхнюю и нижнюю границы, заданные при объявлении массива. Check the declaration of the array to verify its upper and lower bounds. Используйте функции UBound и LBound, чтобы обуславливать доступ к массивам, если вы работаете с массивами, которые имеют другие измерения. Use the UBound and LBound functions to condition array accesses if you are working with arrays that are redimensioned. Если индекс указан как переменная, проверьте правильность имени переменной. If the index is specified as a variable, check the spelling of the variable name.
Массив был объявлен без определения числа элементов. You declared an array but didn’t specify the number of elements. Например, ниже показано сообщение об ошибке, полученное при запуске такого кода: For example, the following code causes this error:
Visual Basic неявно измеряет неопределенные диапазоны массивов как 0 — 10. Visual Basic doesn’t implicitly dimension unspecified array ranges as 0 — 10. Вместо этого необходимо использовать Dim или ReDim, чтобы явно указать число элементов в массиве. Instead, you must use Dim or ReDim to specify explicitly the number of elements in an array.
Вы обратились к несуществующему элементу коллекции. You referenced a nonexistent collection member. Вместо указания индексов попробуйте обработать элементы массива с помощью конструкции For Each. Next. Try using the For Each. Next construct instead of specifying index elements.
Вы использовали сокращенную форму индекса, который неявно указывал недопустимый элемент. You used a shorthand form of subscript that implicitly specified an invalid element. Например, если вы используете ! For example, when you use the ! оператор с коллекцией — ! operator with a collection, the ! неявно указывает ключ. implicitly specifies a key. Например, объект!ключевоеИмя. For example, object!keyname. значение эквивалентно объекту. value is equivalent to object. элемент (ключевоеИмя). item (keyname). значение. value. В этом случае возникает ошибка, если ключевоеИмя обозначает недопустимый ключ в коллекции. In this case, an error is generated if keyname represents an invalid key in the collection. Чтобы исправить ошибку, используйте правильное имя ключа или индекс для коллекции. To fix the error, use a valid key name or index for the collection.
Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh). For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Interested in developing solutions that extend the Office experience across multiple platforms? Ознакомьтесь с новой моделью надстроек Office. Check out the new Office Add-ins model. У надстроек Office мало места по сравнению с надстройками и решениями VSTO, которые можно создавать с помощью практически любой технологии веб-программирования, например HTML5, JavaScript, CSS3 и XML. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.
Поддержка и обратная связь Support and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Исправить ошибку «Subscript out of range» в коде, работающем со сгенерированными листами
Собственно данный код должен создавать вначале страницы в книге с названием ПЭ1, ПЭ2. ПЭi, а затем (после ПЭi) страницы с названием Спецификация1, Спецификация2. Спецификацияx.
Не могу понять, почему возникает данная ошибка в строчке
Исправить ошибку «Subscript out of range» в коде, работающем с жестко заданными объектами
Добрый день! Помогите исправить ошибку в 4 строке. Файл так и назван, лист такой существует.
Найти ошибку в коде vba. «Subscript out of range «
Public line As Double Private Sub UserForm_Initialize() line = 1 ComboBox1.AddItem.
Исправить ошибку «Subscript out of range» при обращении к рабочей книге
Всем привет. помогите пожалуйста с ошибкой Private Sub CommandButton1_Click() .
Ошибка «Subscript out of range» при работе с индексами массива
Добрый день! Никак не могу понять природу ошибки. Массиву присваивается диапазон значений, но как.
Hugo121, но ведь он его создает.
При возникновении ошибки я вижу, что лист ПЭ1 создается. А вот лист Спецификация1 нет.
Также, если мы используем только модуль 4, то листы ПЭ1, ПЭ2. ПЭi создаются стабильно, ошибок не возникает.
Добавлено через 9 минут
модуль 1 то есть, опечатался.
В принципе, можно немного переписать код, добавив в модуле 1:
Решение
Hugo121, во вложении упрощенный пример)
mc-black, спасибо за совет, сейчас попробую.
Вложения
Книга1.xls (46.0 Кб, 7 просмотров) |
Hugo121, упс, спасибо, действительно после упрощения — разобрался с проблемой
Всем спасибо за помощь.
все как всегда
нет файла и идет стрельба из пушек по воробьям
Ошибка: «Run-time error ‘9’: Subscript out of range»
Здравствуйте! При многократном нажатии на кнопку вылазит данная ошибка «Run-time error ‘9’.
Запись данных из одного массива в другой, ошибка «Subscript out of range»
Друзья, помогите разобрать в причине ошибки, которую выдает компилятор при попытке записать в один.
Ошибка при запуске макроса в MS Excel 2007 «Subscript out of range»
Ошибка такая: Subscript out of range Наверняка ошибка в коде: Sub Las() Dim middle(1 To 10) As.
«Subscript out of range» VBA
Хочу,чтобы работал всплывающий список на форме в VBA Excel В списке должны отображаться номера.
Почему выдает ошибку subscript out of range?
Почему выдает ошибку Почему выдает ошибку subscript out of range?
во всех строка где находится ActiveWorkbook.Worksheets(List).Cells(k, 2)
(не засунул под с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
If k Вопрос задан более двух лет назад