массив пользовательских типов в openoffice

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
v5v5
Сообщения: 2
Зарегистрирован: 28 апр 2009, 10:23

Как реализовать массив пользовательских типов в openoffice?

Я делал так

Type MyType
Param0@
Param1@
Param2@
Param3@
End Type

Dim Massiv() As MyType

Но по ходу программы не работает

ReDim Massiv(0 To 9)

Как бы это заставить работать?
Если при определениии массива MyType заменить на Integer, то все нормально
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

В MSOffice нормально работает...
А какое сообщение об ошибке выдает?
Может в нём так прямо и написано, что нельзя?
v5v5
Сообщения: 2
Зарегистрирован: 28 апр 2009, 10:23

Вот примерно такой же пример:

Код: Выделить всё

REM  *****  BASIC  *****
Option Explicit

Type MyType
  Param0#
  Param1#
  Param2#
  Param3#
End Type

Dim Massiv() As MyType

Sub Main
  Dim oSheets, oSheet
  Dim i%

  oSheets = ThisComponent.Sheets
  oSheet = oSheets.getByIndex(0)

  ReDim Massiv(0 To 9) As MyType
  
  For i% = 0 To 9
    Massiv(i%).Param0# = oSheet.getCellByPosition(0, i%).getValue()
    Massiv(i%).Param1# = oSheet.getCellByPosition(1, i%).getValue()
    Massiv(i%).Param2# = oSheet.getCellByPosition(2, i%).getValue()
    Massiv(i%).Param3# = oSheet.getCellByPosition(3, i%).getValue()
  Next i%

End Sub
При отладке в строке

ReDim Massiv(0 To 9) As MyType

Сообщение об ошибке

Inadmissible value or data type. Index out of defined range.

Выходит нельзя в динамических массивах использовать пользовательские типы?! Я об этом ничего не нашел.

Все это в Calc (OpenOffice). В MsOffice я не пробовал.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Отвечаю сам себе

строку

ReDim Massiv(0 To 9) As MyType

надо заменить на

ReDim Preserve Massiv(0 To 9) As MyType

Это работает как надо. Вот зесь нашел

http://www.oooforum.org/forum/viewtopic.phtml?t=64888
Ответить