1

Тема: Приравнивание массива: VBA — нормально, VBS — ошибка

Привет! Извиняюсь за тупость, я VBS пользуюсь редко, в основном VBA. Вопрос — описан в коде ниже.


Option Explicit ' обязательное объявление переменных

' --- описываем переменные --->

Dim ArrStat(3)  ' статический массив из 3 эл-тов
Dim ArrDyn1()   ' динамический массив
Dim HereIsArr1  ' переменная, к которой будет приравнен массив

' <-- конец описания перем. ---

' СУТЬ ПРОБЛЕМЫ: насколько я помню, в VBA массив можно было приравнивать
'                либо к переменной Variant, либо к динамическому массиву;
' кроме того, обращаться к динамическому массиву можно было и со скобками
' и без них (напр., со скобками: ArrDyn1(), без скобок: ArrDyn1), обычно
' использ-ся синтаксис без скобок, но мне больше нравится со скобками,
' так как это нагляднее (видя после переменной скобки, я сразу понимаю, 
' что это массив).
'
' Но когда я попробовал написать так же в VBS, то полезли ошибки :(
' Причём в VBA ни в одном из нижеприведенных вар-тов ошибок не было!

ArrStat(0) = "тыква"    ' 
ArrStat(1) = "дыня"     ' заполним статич. массив значениями
ArrStat(2) = "банан"    '

                        ' при= статич. массив к перем-й Variant
                        ' *******************************************
                        ' пробую разный синтаксис (со скобками и без)
                        '
'HereIsArr1 = ArrStat() ' - со скобками
                        '   ОШИБКА: "Subscript out of range"
                        ' 
 HereIsArr1 = ArrStat   ' - без скобок
                        '   * тут ошибки нет

                        ' при= статич. массив к динамич-му массиву
                        ' *******************************************
                        '
'ArrDyn1()  = ArrStat() ' - скобки     = скобки
                        '   ОШИБКА: "Subscript out of range"
                        '
'ArrDyn1()  = ArrStat   ' - скобки     = нет скобок
                        '   ОШИБКА: "Subscript out of range"
                        '
'ArrDyn1    = ArrStat() ' - нет скобок = скобки
                        '   ОШИБКА: "Subscript out of range"
                        '
'ArrDyn1    = ArrStat   ' - нет скобок = нет скобок
                        '   ОШИБКА: "Type mismatch"

Объясните — что за непонятки в VBS? Получается, что в VBS массив можно приравнивать только к переменной, но не к другому (динамическому) массиву?

2

Re: Приравнивание массива: VBA — нормально, VBS — ошибка

Option Explicit

Dim arrArray01
Dim arrArray02

Dim elem


arrArray01 = Array(1, 2, 3)

For Each elem In arrArray01
    WScript.Echo elem
Next

arrArray02 = arrArray01

For Each elem In arrArray02
    WScript.Echo elem
Next


WScript.Quit 0