Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
stickstoff
1 / 1 / 0
Регистрация: 03.12.2011
Сообщений: 47
#1

Использую UBound для определения границы массива, но выдает Subscript out of Range - VBA

11.04.2012, 18:40. Просмотров 2809. Ответов 5
Метки нет (Все метки)

Передаю в процедуру массив по ссылке. В ней использую UBound для определения границы массива, но
выдает Subscript out of Range. шаблон макроса прилагается...
http://www.cyberforum.ru/vba/thread829265.html
0
Вложения
Тип файла: xls arr.xls (22.5 Кб, 15 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 18:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использую UBound для определения границы массива, но выдает Subscript out of Range (VBA):

Word: Ubound GetCrossReferenceItems Выдает неправильное занчение
Word 2003 Нужно получить количество вставленных в документ "Рисунок", "Таблиц"...

Ошибка "Subscript out of range" при работе с индексами массива
Добрый день! Никак не могу понять природу ошибки. Массиву присваивается...

Запись данных из одного массива в другой, ошибка "Subscript out of range"
Друзья, помогите разобрать в причине ошибки, которую выдает компилятор при...

Subscript out of range
Sub ff() Dim i As Variant, s As Variant, q As Variant, p As Variant Dim C As...

Subscript out of range
Здравствуйте, столкнулся с ошибкой при решении задачи по массивам Option...

5
Казанский
13872 / 5635 / 1435
Регистрация: 24.09.2011
Сообщений: 8,846
11.04.2012, 18:46 #2
Массив объявлен, но не инициализирован. Используйте
Visual Basic
1
2
3
4
    Dim arr(5) As String
'или
    Dim arr() As String
    ReDim arr(-3 To 5)
Во втором случае размер массива можно менять по ходу выполнения программы, в первом случае - нет.
1
stickstoff
1 / 1 / 0
Регистрация: 03.12.2011
Сообщений: 47
11.04.2012, 19:13  [ТС] #3
а почему внутри процедуры для переопределения этого массива я не могу использовать ключевое слово
ReDim Preserve? Выдает тот же ляп...
0
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,803
Записей в блоге: 16
11.04.2012, 20:23 #4
По тому что Redim Preserve - означает изменить размерность с сохранением предыдущих данных. Т.к. массив еще не имеет ни границы структуры, ни данных, выдается ошибка.
Нужно сначала объявить любую минимальную размерность, хотя бы Redim arr(0)

Учтите, что нижнюю границу нельзя изменять. Это значит, что:
Visual Basic
1
2
3
Dim arr() As String
ReDim arr(-3 To 5)
ReDim preserve arr(-2 to 4)
выдаст ошибку.

Visual Basic
1
2
3
Dim arr() As String
ReDim arr(-3 To 5)
ReDim preserve arr(-3 to 4)
- а так можно.

Кроме того, если массив двухмерный и более, изменять можно только верхнюю границу последней размерности - redim preserve arr(5, 4, 1 to 8)
0
stickstoff
1 / 1 / 0
Регистрация: 03.12.2011
Сообщений: 47
11.04.2012, 20:51  [ТС] #5
А почему в процедуре использование ReDim Preserve выдает баг, но используя ReDim вроде делает?
0
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,803
Записей в блоге: 16
11.04.2012, 21:02 #6
Значит выполняете непозволенное действие с границами или не инициализировали Redim-ом перед использованием Redim Preserve,
или пытаетесь сменить границу статического массива.

Напишите строки кода, которыми Вы проводите преобразования.
0
11.04.2012, 21:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2012, 21:02
Привет! Вот еще темы с решениями:

Error 9: Subscript out of range
Добрый вечер! Получилось написать код решения системы оду методом Рунге-Кутты,...

Error 9: Subscript out of range
Господа, всем добрый день мне нужно исправить ошибку в программе для...

Ошибка - Subscript out of range
Объясните пожалуйста, что я делаю не так? Хочу просто скопировать Лист1 в...

Почему subscript out of range?
VBA выполняет все процедуры из условий даже если уже ясно что все выражение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru