Шаг 21 - Пользовательские типы

В общей части Вы должны описать структуру и объявить переменную типа этой структуры. Смотрите картинку.

Итак мы создадим тип с элементами x,y, типа Integer и с с типом Variant. Ох уж этот Variant, он позволяет нам в структуру помещать все, что угодно. Хоть массив. Мы то сделаем. Но разве Вас не впечатляет простота и мощь. Ведь так можно создать структуры любой сложности очень просто. Нет OLE, нет указателей. После C++ это просто сказка.

' Описание

Private Type MyType

x As Integer

y As Integer

c As Variant

End Type

Sub Test()

'--------------------------

' Область функции

Sub Test()

Dim a(2) As MyType

Dim arrays(2) As String

arrays(1) = "Hello"

arrays(2) = "Cool"

a(1).x = 1

a(1).y = 2

a(1).c = arrays

a(2).x = 10

a(2).y = 20

arrays(1) = "Hello 2"

arrays(2) = "Cool!!!"

a(2).c = arrays

Debug.Print "a1"

Debug.Print a(1).c(1)

Debug.Print a(1).c(2)

Debug.Print "a2"

Debug.Print a(2).c(1)

Debug.Print a(2).c(2)

End Sub

Во всем этом есть и подводный камень. Создавать структуры можно только на уровне модуля. Не зря она у нас Private. Но можно создавать классы, которые умеют с ними работать:-) Это несколько радует.

Для просмотра результата Вам необходимо открыть окно отладки. Это можно сделать в меню Вид - Окно отладки (CTRL-G).

Вот такой результат вы должны увидеть:

a1

Hello

Cool

a2

Hello 2

Cool!!!

Шаг 22 - For Each

Этот цикл придуман для того, чтобы облегчить дествия над массивами и наборами. Он позволяет произвести однотипные операции над всем массивом. Описание его такое:

For Each переменная In массив

Действия

Next переменная

Переменная должна иметь тип Variant или Object, в котором можно хранить практически всё. Пример? Пожалуйста.

Sub Test()

Dim arrays(1) As String

arrays(0) = "Hello"

arrays(1) = "Each:-)"

Dim vari As Variant

For Each vari In arrays

MsgBox (vari + " - Steps")

Next vari

End Sub

For Each очень удобен для работы с коллекциями. Вот так можно пробежаться по открытым кигам.

Sub Test()

Dim vars As Variant

For Each vars In Workbooks

MsgBox (vars.Name)

Next vars

End Sub

Или по листам книги:

Sub Test()

Dim vars As Variant

For Each vars In Workbooks.Item("Test.xls").Sheets

MsgBox (vars.Name)

Next vars

End Sub


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: