Чтобы создать массив объявленного типа, обязательно используйте синтаксис Dim As New
.
Type myType
myParam1 As String
myParam2 As Long
End Type
Sub mySub
Dim myArr(2) As New myType
myArr(0).myParam1 = "A"
myArr(0).myParam2 = 1
myArr(1).myParam1 = "B"
myArr(1).myParam2 = 2
For i = 0 to Ubound(myArr) - 1
Print myArr(i).myParam1
Next
End Sub
Что касается добавления подпрограмм в операторе Type
, его нет в документация . С другой стороны, это неотъемлемая часть Python, одного из самых популярных языков сценариев LibreOffice.
class myClass:
myAttr1 = ""
myAttr2 = 0
def myFunc(self, param):
self.myAttr2 = param
print(self.myAttr1)
myArr = [myClass(), myClass()]
myArr[0].myAttr1 = "A"
myArr[0].myAttr2 = 1
myArr[1].myAttr1 = "B"
myArr[1].myAttr2 = 2
for myObj in myArr:
myObj.myFunc(3)