i=0
j=0
Redim Preserve Array(i,j)
If j=Ubound(Array,2) then
Array(i,j)=s
Вопрос, собственно, что сделать то надо? А то из кода это совершенно непонятно.
Dim Array()
Dim i,j,s,s1
Dim WshSHel
Set WshShel=CreateObject("Wscript.Shell")
i=0
j=0
Redim Preserve Array(i,j)
For i=1 to 2
For J=1 to 2
If j=Ubound(Array,2)+1 then
Redim Preserve Array(i,j)
End If
S1="Введите элемент в "&i&"-ую строку "&j&"-й столбец."
s=InputBox(s1, "окно для ввода пароля Элементов")
Array(i,j)=s
Next
Next
For i=1 to 2
For J=1 to 2
WshShel.PopUp Array(i,j),3
Next
Next
Wscript.Quit
Код:
Array(i,j)=s
пытаешься присвоить значение элементу массива явно няходящемуся за его границами.
MSDN писал(а):If you use the Preserve keyword, you can resize only the last array dimension and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array.
Dim Matrix() As Long
Dim i As Long, j As Long, s As Long
Dim s1 As String
Dim x As Long ' столбцы
Dim y As Long ' строки
x = Val(Text2.Text) - 1 ' столбцы
y = Val(Text1.Text) - 1 ' строки
ReDim Matrix(y, x)
For i = 0 To y
For j = 0 To x
s1 = "Введите элемент в " & i + 1 & "-ую строку, " & j + 1 & "-й столбец."
s = InputBox(s1, "окно для ввода пароля элементов")
Matrix(i, j) = s
Debug.Print s;
Next
Debug.Print " "
Next
Type CompStatus
cName As String
cDate As Date
cTime As Long
...
' перечислить сохраняемые параметры
End Type
Dim Computers() As CompStatus
R писал(а):Я для WSH скрипт пишу. VBS скрипт. Если там возможно определить массив элементами которого являлись бы массивы.... Никто не знает как это делать в WSH ?
v = Array(Array(1, 2, 3), Array(4, 5, 6))
Dim compInfo()
Dim cols
Dim rows
Dim N
Dim i
cols = 4 'количество параметров (Имя ПК, Логин и т. д.)
rows = 1 'изначально 1 строка
N = 5
ReDim compInfo(cols,rows)
For i = 1 to N 'N-количество компов
'если комп № i включен, то:
rows = rows + 1
ReDim Preserve compInfo(cols,rows)
compInfo(0, rows) = "Имя ПК"
compInfo(1, rows) = "Лигин"
compInfo(2, rows) = "Дата"
compInfo(3, rows) = "Время"
Next
sVar="" 'Пустые двойные кавычки
If sVar="" Then ...
R писал(а):А некоторые ячейки будут пустыми....потому что не все ПК включены - как мне их потом находить ?
tyomitch писал(а):Для массива массивов можно применять ReDim Preserve к любой строке независимо от остальных, плюс можно им добавлять--удалять строки.
Dim A()
ReDim A(1 To 2, 1 To 3)
A(1,1) = Array(...)
A(1,2) = Array(...)
...
A(2,3) = Array(...)
...
ReDim Preserve A(1 To 5, 1 To 4)
Так может лучше вообще не добавлять в массив выключенные компы?
Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 89