|
|
|
новичок
      
участник
Last Login: 15.05.2007 9:29
Сообщ.: 1,
Visits: 1
|
|
| Помогите с созданием динамических двумерных массивов. С одномерным там усе понятно: Dim mas() as integer ReDim mas(i) as integer и будет счастие, а ка быть, если надо двумерный? Если объявить его также, а потом ReDim mas(i,j) as integer - будет ругаться, нашел в интернете Dim mas(,) as integer - компилятор ругается ......может кто знает, памажите
|
|
|
|
|
Supreme Being
      
участник
Last Login: 26.10.2007 9:10
Сообщ.: 166,
Visits: 1 538
|
|
| Компилятор будет ругаться, если в ReDim указать тип, отличный от указанного в Dim. Лучше вообще не указывай тип при определении размера массива.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 19.08.2008 15:27
Сообщ.: 112,
Visits: 681
|
|
Создаем модуль класса и называем его hash2d,в него засовываем код:Dim h As New Scripting.Dictionary Function item(k) As Scripting.Dictionary If Not h.Exists(k) Then Set h(k) = New Scripting.Dictionary End If Set item = h(k) End Function
Создаем тестовый модуль и суем в код: Sub sdfg() Dim x As New hash2d For i = 1 To 100 For j = 1 To 100 x.item(i)(j) = Rnd * 10 Next j Next i For i = 1 To 100 For j = 1 To 100 t = t & Format(x.item(i)(j), "0000") & " " Next j Debug.Print t t = "" Next i End Sub
В Immediate будет распечатан массив. Причем этот двумерный хеш может быть адресован не только числами но и любыми строками. x.item("Документ1")("<ДатаНачалаДейстчия>") и к томуже мы можем присвоить нетолько значение, но и ссылку на какой-то объект. set x.item("ContextMenus")("menu 1") = new MyApiPopup Разумеется нужно использовать Option explicit, и все объявить соответствено...
|
|
|
|