Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Динамический массив VBA - Run-time error 9: subscript out - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Динамический массив VBA - Run-time error 9: subscript out (Функции/Function)
Динамический массив VBA - Run-time error 9: subscript out
Piru Дата: Пятница, 28.04.2017, 13:28 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ребята подскажите пожалуйста, что с этим кодом не так??? Как только row_num = 9 выскакивает ошибка, отрицать не стану, что с VBA начал общаться неделю назад.
И руководство поставило задачу решить вопрос по раскодировке plt - файла и его оптимизации. Вот часть кода, в котором нужно загрузить файл из txt формата. произвести расчеты и выгрузить в новый txt. на этапе ReDim Preserve DynMas(1 To LBound(DynMas, 1) + 1, 1 To 5) возникает ошибка Run-time error 9: subscript out

[vba]
Код
Sub Massiv()
Dim DynMas() As Variant
Dim File_Path As String

File_Path = "C:\Users\Admin\Desktop\Maz T044SS (OOO NPP SGT).txt"
row_num = 1
ReDim DynMas(1 To row_num, 1 To 5) As Variant
Open File_Path For Input As #1

Do Until EOF(1)
Line Input #1, Line_FromFile
Line_Items = Split(Line_FromFile, ",")
If row_num > 7 Then
For i = 1 To 5
DynMas(UBound(DynMas, 1), i) = Line_Items(i - 1)
Next i
ReDim Preserve DynMas(1 To LBound(DynMas, 1) + 1, 1 To 5)
End If
row_num = row_num + 1
Loop
Close #1
Call CulculateDistance(DynMas)
End Sub
[/vba]
К сообщению приложен файл: _1.xlsm (18.9 Kb)


Остановите эту планету! Я сойду.

Сообщение отредактировал Piru - Пятница, 28.04.2017, 14:20
 
Ответить
СообщениеРебята подскажите пожалуйста, что с этим кодом не так??? Как только row_num = 9 выскакивает ошибка, отрицать не стану, что с VBA начал общаться неделю назад.
И руководство поставило задачу решить вопрос по раскодировке plt - файла и его оптимизации. Вот часть кода, в котором нужно загрузить файл из txt формата. произвести расчеты и выгрузить в новый txt. на этапе ReDim Preserve DynMas(1 To LBound(DynMas, 1) + 1, 1 To 5) возникает ошибка Run-time error 9: subscript out

[vba]
Код
Sub Massiv()
Dim DynMas() As Variant
Dim File_Path As String

File_Path = "C:\Users\Admin\Desktop\Maz T044SS (OOO NPP SGT).txt"
row_num = 1
ReDim DynMas(1 To row_num, 1 To 5) As Variant
Open File_Path For Input As #1

Do Until EOF(1)
Line Input #1, Line_FromFile
Line_Items = Split(Line_FromFile, ",")
If row_num > 7 Then
For i = 1 To 5
DynMas(UBound(DynMas, 1), i) = Line_Items(i - 1)
Next i
ReDim Preserve DynMas(1 To LBound(DynMas, 1) + 1, 1 To 5)
End If
row_num = row_num + 1
Loop
Close #1
Call CulculateDistance(DynMas)
End Sub
[/vba]

Автор - Piru
Дата добавления - 28.04.2017 в 13:28
китин Дата: Пятница, 28.04.2017, 13:32 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение Как оформлять сообщения?

Автор - китин
Дата добавления - 28.04.2017 в 13:32
KuklP Дата: Пятница, 28.04.2017, 14:58 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Для этого в Эксе есть справка. F1 трудно нажать? А справка говорит нам:
Preserve Optional. Keyword used to preserve the data in an existing array when you change the size of the last dimension. Надеюсь понятно объяснил :)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеДля этого в Эксе есть справка. F1 трудно нажать? А справка говорит нам:
Preserve Optional. Keyword used to preserve the data in an existing array when you change the size of the last dimension. Надеюсь понятно объяснил :)

Автор - KuklP
Дата добавления - 28.04.2017 в 14:58
RAN Дата: Пятница, 28.04.2017, 20:11 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
по раскодировке plt - файла и его оптимизации

Это УП для станка с ЧПУ? Я ничего не путаю?
Считать txt файл на пару миллионов строк можно, да и раскодировать там нечего, ибо ничго и не закодировано.
Но как такой файл править вручную, я с трудом представляю.
Точнее говоря, я хорошо представляю, что там можно править вручную, а что нет.
Но могу сказать абсолютно точно, для этого нужен не Excel, а специализированый софт.
PS хотя, правда, у меня есть макросы для редактирования подобных файлов. Но все они решают конкретную, ведомую мне, задачу.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 28.04.2017, 20:15
 
Ответить
Сообщение
по раскодировке plt - файла и его оптимизации

Это УП для станка с ЧПУ? Я ничего не путаю?
Считать txt файл на пару миллионов строк можно, да и раскодировать там нечего, ибо ничго и не закодировано.
Но как такой файл править вручную, я с трудом представляю.
Точнее говоря, я хорошо представляю, что там можно править вручную, а что нет.
Но могу сказать абсолютно точно, для этого нужен не Excel, а специализированый софт.
PS хотя, правда, у меня есть макросы для редактирования подобных файлов. Но все они решают конкретную, ведомую мне, задачу.

Автор - RAN
Дата добавления - 28.04.2017 в 20:11
Piru Дата: Воскресенье, 30.04.2017, 08:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Это УП для станка с ЧПУ? Я ничего не путаю?
Нет к ЧПУ это никого отношения не имеет, это часть кода, которая отвечает за обработку данных поступающих со спутника. Короче за машинами следят. С одной строки можно считать место расположение расстояние, время работы, простоя и т.д.
Вот пример строки
[vba]
Код
66.475388, 77.115024, 1, 48.0, 42643.792419
[/vba]
первое и второе значение долгота и широта, далее значения заданные по курсу движения объекта, и наконец время работы объекта



Остановите эту планету! Я сойду.
 
Ответить
Сообщение
Это УП для станка с ЧПУ? Я ничего не путаю?
Нет к ЧПУ это никого отношения не имеет, это часть кода, которая отвечает за обработку данных поступающих со спутника. Короче за машинами следят. С одной строки можно считать место расположение расстояние, время работы, простоя и т.д.
Вот пример строки
[vba]
Код
66.475388, 77.115024, 1, 48.0, 42643.792419
[/vba]
первое и второе значение долгота и широта, далее значения заданные по курсу движения объекта, и наконец время работы объекта


Автор - Piru
Дата добавления - 30.04.2017 в 08:12
Piru Дата: Воскресенье, 30.04.2017, 08:18 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Preserve Optional. Keyword used to preserve the data in an existing array when you change the size of the last dimension


Фишка в том, что он не добавляет новую строку, когда доходит до координат
Вот пример из массива
[vba]
Код
66.475388, 77.115024, 0, 48.0, 42643.7987384
66.475388, 77.115024, 0, 48.0, 42643.7997917
[/vba]


Остановите эту планету! Я сойду.
 
Ответить
Сообщение
Preserve Optional. Keyword used to preserve the data in an existing array when you change the size of the last dimension


Фишка в том, что он не добавляет новую строку, когда доходит до координат
Вот пример из массива
[vba]
Код
66.475388, 77.115024, 0, 48.0, 42643.7987384
66.475388, 77.115024, 0, 48.0, 42643.7997917
[/vba]

Автор - Piru
Дата добавления - 30.04.2017 в 08:18
doober Дата: Воскресенье, 30.04.2017, 10:34 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
он не добавляет новую строку

А он и не добавит.Пробуйте мой вариант




Сообщение отредактировал doober - Воскресенье, 30.04.2017, 10:36
 
Ответить
Сообщение
он не добавляет новую строку

А он и не добавит.Пробуйте мой вариант

Автор - doober
Дата добавления - 30.04.2017 в 10:34
Piru Дата: Воскресенье, 30.04.2017, 11:19 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
А он и не добавит.Пробуйте мой вариант


Тогда получается вот такая штука в режиме отладки в окне Locals:

массив пустой

[vba]
Код
RZ(i)
[/vba]
i = 0
В момент [vba]
Код
Call CulculateDistance(DynMas)
[/vba]
На этапе  Lat1 = Coord(i, 1)
[vba]
Код
For i = LBound(Coord, 1) To UBound(Coord, 1)
            Lat1 = Coord(i, 1)
            Lng1 = Coord(i, 2)
            Lat2 = Coord(i + 1, 1)
            Lng2 = Coord(i + 1, 1)
[/vba]
Возникает та же самая ошибка


Остановите эту планету! Я сойду.

Сообщение отредактировал Piru - Воскресенье, 30.04.2017, 11:31
 
Ответить
Сообщение
А он и не добавит.Пробуйте мой вариант


Тогда получается вот такая штука в режиме отладки в окне Locals:

массив пустой

[vba]
Код
RZ(i)
[/vba]
i = 0
В момент [vba]
Код
Call CulculateDistance(DynMas)
[/vba]
На этапе  Lat1 = Coord(i, 1)
[vba]
Код
For i = LBound(Coord, 1) To UBound(Coord, 1)
            Lat1 = Coord(i, 1)
            Lng1 = Coord(i, 2)
            Lat2 = Coord(i + 1, 1)
            Lng2 = Coord(i + 1, 1)
[/vba]
Возникает та же самая ошибка

Автор - Piru
Дата добавления - 30.04.2017 в 11:19
doober Дата: Воскресенье, 30.04.2017, 13:01 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
For i = LBound(Coord, 1) To UBound(Coord, 1)
Lat1 = Coord(i, 1)
Lng1 = Coord(i, 2)

For i = 1 To UBound(Coord, 1)
Lat1 = Coord(i)(1)
Lng1 = Coord(i)(2)

Найдите отличия в коде


 
Ответить
Сообщение
For i = LBound(Coord, 1) To UBound(Coord, 1)
Lat1 = Coord(i, 1)
Lng1 = Coord(i, 2)

For i = 1 To UBound(Coord, 1)
Lat1 = Coord(i)(1)
Lng1 = Coord(i)(2)

Найдите отличия в коде

Автор - doober
Дата добавления - 30.04.2017 в 13:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Динамический массив VBA - Run-time error 9: subscript out (Функции/Function)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!