powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка в Массиве код 9
18 сообщений из 18, страница 1 из 1
Ошибка в Массиве код 9
    #39081122
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день.

У меня в рабочем массиве, который я изначально написал для Функции, вдруг возникла ошибка, когда я этот же массив установил в кнопку, что бы взять из него данные. Теперь он пишет ошибку с кодом 9 - Subscript out of range.

Хотя массив за недопустимый диапазон не выходит. Изначально массив ограничен 12 и счет ведется с 1 числа (Option Base 1). И за этот диапазон мы не выходим. Ошибка возникает сразу на 1 же числе.

Я прикрепляю файл, где писал код. по возможности все лишнее я из него убрал.
В файле нужно щелкнуть на ячейку "СВОДНАЯ" и запуститься UserForm, там нажать ОК и аля ошибка.

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

ошибка возникает вот в этом кусочке кода:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
For i = LBound(iNumMontArr) To UBound(iNumMontArr)
    MsgBox CInt(iNumMontArr(i))  ' < ===== ОШИБКА!
    
    
    'If CInt(iNumMontArr(i)) <> 0 Then ' Массив содержащий номера тех месяцев что используются в МП
        'Year = Me.Controls("TextBoxYar_" & i).Value ' обязательный аргумент, год.
        'NumMonth = Val(Me.Controls("Label" & i).Caption)
        
        'MsgBox NumMonth & " " & Year
    'End If
Next
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081135
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiприкрепляю файл, где писал код. по возможности все лишнее я из него убрал.
А теперь приложи к этому пошаговую инструкцию, что с этим файлом делать, чтобы добраться до описываемой ошибки.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081142
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Простой щелчок по указанной ячейке ни к чему не приводит, двойной клик приводит к ошибке компиляции проекта формы.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081148
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, ты невнимателен, она есть


lopuxi, там интересный прикол. С самим массивом iNumMontArr все в порядке, но в качестве содержимого элемента массива лежит объект "ошибка" ))).
Когда ты пытаешься извлечь эту ошибку из массива, она и случается.

Почему это стало возможно:
1) ты используешь массив Variant (а что мешает использовать массив правильного типа? и вообще там с объявлениями переменных та еще свистопляска. переменные типа Variant нужны очень редко, всегда объявляй тот тип, который тебе реально нужен.
2) ты используешь On Error Resume Next - где-то ошибка вместо того, чтобы возникнуть и указать тебе на ошибку в твоей программе - положилась в массив

глубже копать не стал. приведи типы в порядок и убери лишние On Error
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081153
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, как будто программу писали два разных человека:
правильное объявление переменных
Код: vbnet
1.
Dim Year As Long, NumMonth As Long, m As Long, iDay As Long

неправильное объявление переменных
Код: vbnet
1.
Dim i, y, y2, pi, HiddCel, HiddRow, NumCol, iRow, iCol, Col_TRP, Col_hr, Col_hr2, Col_Svod_hr As Integer
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081161
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proты невнимателен, она есть
Я понимаю, что обычно краткость - сестра таланта, но в данном случае она - сирота. Ибо приведённая инструкция приводит к тому, что я указал. По причине наличия в референсах библиотеки, не входящей в стандартную поставку.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081162
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Microsoft office web components 11.0" у меня нет(пришлось убрать MISSINF в References), поэтому как только дохожу до нужной строки Excel падает.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081184
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо. Да, с объявлением переменных я действительно не утруждаю себя... часто использую Variant так как он принимает любой тип. Но это видимо прокатывает только в простых задачах.
Попробую привести все переменные к нужному типу сейчас. И посмотрю почему вообще ошибка в массив попадает.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081223
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiя действительно не утруждаю себяскупой платит дважды
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081239
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

On Error нету в коде.
Это может быть связано с наличием нулевого значения в массиве, при использовании Option Base 1 ?

У меня сейчас цикл заполняющий массив проходит с условием при исполнении которого массив записывает число от 1 до 12, в зависимости когда условие сработало. А когда условие не сработало, то в массив попадает 0. Это может приводить к подобной ошибке?
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081304
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cint(0) привести к ошибке не может.
А Cint(variable(0)) при option base 1 и не-объявлении нулевой нижней границе явно - обязательно приведёт.
Кстати, Subscript out of range может возникать не только при обращении к элементу массива за пределами его границ.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081321
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiУ меня сейчас цикл заполняющий массив проходит с условием при исполнении которого массив записывает число от 1 до 12, в зависимости когда условие сработало. А когда условие не сработало, то в массив попадает 0. Это может приводить к подобной ошибке?Блин, типизируй ВСЕ переменные, ошибка сразу переместится в другое место и будет яснее.
Заодно не понадобятся всякие CInt-ы
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081327
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, нашел проблему
Код: vbnet
1.
Unload SvodList ' Закрываем форму.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081335
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКстати, нашел проблему
Код: vbnet
1.
Unload SvodList ' Закрываем форму.

ты сказал, что убрал все лишнее. Надо было РЕАЛЬНО убрать все лишнее
тогда бы сам нашел ошибку
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39081433
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, по ходу дела... твой способ фильтрации ввода цифр в текстовые поля не защищает от вставки туда букв из буфера обмена.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39085021
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Да, я кстати так и нашел ее) Вся беда была в закрытии формы...))
Сейчас я уже все доделал, все работает.
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39085063
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
да, действительно.. буквы вставить из буфера обмена в поля можно... А есть способ, запретить использовать буфер обмена, то бишь вставить что-то в поле. Или может чистить буфе обмена, при запуске формы?

Спасибо, за помощь и нахождение ошибок!
...
Рейтинг: 0 / 0
Ошибка в Массиве код 9
    #39085081
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просто обрабатываю TextBox_Change и убираю все, кроме разрешенных символов
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка в Массиве код 9
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]