Справочное руководство по VBScript

Язык VBscript, так же как и JavaScript, используется для создания сценариев, как клиентских, так и серверных. Клиентские сценарии на VBScript интерпретируются только браузером Internet Explorer, а серверные используются на страницах ASP. Кроме того, VBScript очень близок к языкам Visual Basic и Visual Basic for Application (VBA). В большинстве случаев переделки программ на для перевода с одного языка на другой оказываются минимальными. В HTML-документ сценарий на VBScript вставляется с помощью тэга < SCRIPT> с обязательным указанием атрибута LANGUAGE = (язык). В качестве значения этого атрибута следует указывать либо VBScript, либо VBS. Например,
< SCRIPT LANGUAGE = VBScript>
< SCRIPT LANGUAGE = VBS>

Если не указать язык сценария, то браузер будет предполагать, что сценарий написан на JavaScript и следовательно появятся сообщения об ошибках.
Сценарии на VBScript можно сохранять в текстовых файлах с расширением vbs и вставлять их в HTML-документ следующим образом:
< SCRIPT LANGUAGE = VBScript SRC = имя_файла.vbs>< /SCRIPT>

Примечание
Здесь и далее в тэгах HTML после открывающихся уголков < следует пробел, чтобы эти тэги не интерпретировались браузером, а просто отображались как текст HTML-кода.

VBScript является регистронезависимым языком (в отличие от JavaScript). Это означает, что изменение регистра символов (с прописных на строчные и наоборот) в имени переменной приводит к одной и той же переменной. Например, variable, Variable и vaRiabLe — одинаковые переменные.
Принципы программирования сценариев на VBScript такие же, что и на JavaScript. Однако имеются весьма заметные отличия в синтаксисе и наборах встроенных средств. Здесь мы не будем рассматривать VBScript столь же подробно, как JavaScript, а остановимся лишь наиболее важных, на мой взгляд, особенностях. Для тех, кто уже знаком с JavaScript, ниже приводится список основных особенностей VBScrip, отличающих его от JavaScriptt:

	-  Выражения на VBScript не зависят от регистра
	-  Комментарии выделяются одинарным апострофом (верхней одинарной кавычкой)
	-  Объявление и назначение значений переменным возможно
	   как с помощью оператора присваивания =,  так и с помощью
	   специальных операторов (Dim, Let, Set, Private, Public).
	-  Задание массивов
	-  Определения функций и процедур
	-  Вызовы функций, процедур и методов объектов допускают как бесскобочный,
	   так и скобочный синтаксис при передаче параметров
	-  Обработчики событий вызываются в выражениях не с точечным,
	   а с дефисным  синтаксисом

1. Ввод и вывод данных

Для вывода сообщения существует функция MsgBox, а для ввода — InputBox. С некоторым приближением их можно рассматривать как аналоги методов alert() и prompt() в JavaScript.

MsgBox
Выводит диалоговое окно с сообщением и набором кнопок; возвращает числовое значение, показывающее, какая кнопка нажата. Возможны две формы вызова:

MsgBox(сообщение, число, заголовок)
MsgBox сообщение, число, заголовок

Синтаксис с круглыми скобками для записи вызова функции MsgBox используется, чтобы присвоить возвращаемое значение произвольной переменной:

x = MsgBox("Добро пожаловать!", 20, "Приветствие")

Первый параметр обязателен. Второй числовой параметр указывает, какая картинка и кнопки появятся в диалоговом окне.

Значения числового параметра, определяющего набор кнопок на панели, приведены ниже:


Константа	Значение	Кнопки

vbOkOnly		0	OK
vbOkCancel		1	OK, Cancel
vbAbortRetryIgnore	2	Abort, Retry, Ignore
vbYesNoCancel		3	Yes, No, Cancel
vbYesNo			4	Yes, No
vbRetryCancel		5	Retry, Cancel
vbDefaultButtonI	0	По умолчанию активна первая слева кнопка
vbDefaultButton2	256	По умолчанию активна вторая слева кнопка
vbDefaultButton3	512	По умолчанию активна третья слева кнопка
vbDefaultButton4	768	По умолчанию активна четвертая слева кнопка

Значения числового параметра, определяющего картинку, приведены ниже:


Константа	Значение	Описание			Картинка

vbCritical		16	Важное сообщение		Перекрестие
vbQuestlon		32	Вопрос				Знак вопроса
vbExclamation		48	Предупреждение			Восклицательный знак
vblnformatlon		64	Информационное сообщение	Буква "i"

Следующие две константы определяют режим работы диалогового окна:


Константа		Значение	Описание
vbApplicationModal	0		Пока пользователь не нажмет кнопку,
					работа приложения останавливается
vbSystemModal		4096		Пока пользователь не нажмет кнопку,
					работа всей системы останавливается

Чтобы использовать одновременно несколько установок, необходимо просто сложить соответствующие значения числового параметра. Например, если требуется вывести картинку с вопросом и две кнопки Yes и No, то следует задать параметр 4 + 32 = 36.
Ниже показаны возвращаемые значения, которые присваиваются переменной intButtonClicked:


Константа	Значение	Нажатая кнопка

VbOK		l		OK
vbCancel	2		Cancel
vbAbort		3		Abort
vbRetry		4		Retry
vbIgnore	5		Ignore
vbYes		б		Yes
vbNo		7		No

Если требуется, чтобы сообщение выводилось в нескольких строках, то следует использовать функцию Chr(13), возвращающую служебный символ перевода каретки в качестве разделителя строк. Например,
MsgBox "Привет!" + Chr(13) + "Для продолжения щелкните на кнопке OK"

InputBox

Выводит диалоговое окно с полем ввода данных и двумя кнопками ОК и Cancel (Отмена). Возвращает текст в поле ввода данных, если был щелчок на кнопке OK, или значение Empty, если был щелчок на кнопке Cancel. Возможны две формы вызова:
InputBox(подсказка, заголовок, исходное_значение, x, y)
InputBox подсказка, заголовок, исходное_значение, x, y

Синтаксис с круглыми скобками для записи вызова функции MsgBox используется, чтобы присвоить возвращаемое значение произвольной переменной:
x = InputBox("Введите пароль","Вход в систему",", 1000,2000)

Подсказка представляет собой текст, выводимый внутри диалогового окна, исходный_текст — содержимое поля ввода при открытии окна, x и y — необязательные соответственно горизонтальная и вертикальная координаты относительно левого верхнего угла экрана монитора, измеряемые в твипах (1твип = 1/1440 дюйма). На рис. 13.2 показан пример диалогового окна.

2. Типы данных

Язык VBScript, как и JavaScript, является языком с так называемым свободным типом данных. Это означает, что переменная будет иметь тип, который определяется типом присваиваемого значения. При этом одна и та же переменная может иметь то один тип, то другой. Каким либо специальным образом тип переменной в тексте программы не объявляется. Обычно переменным присваиваются значения в виде строки символов, заключенных в двойные кавычки двойные или одинарные или числа (без кавычек). Внутреннее представление этих значений соответствует одному из следующих типов:

Типы данных в VBScriptt


Тип данных			Примеры			Описание значений
String 				"Привет всем!"
(Строковый или символьный)	"д.т. 123-4567"
				"Сегодня 30.11.2004г."	Последовательность символов, заключенная в кавычки, двойные или одинарные
Integer (Целый)						Целые числа в диапазоне от -32768 до 32767
Long (Длинный)						Целые числа в диапазоне от -2147483648 до 2147483647
Single (Одинарный)					Вещественные числа с плавающей точкой одинарной точности в диапазоне примерно от -3.4e38 до -1.4e-45 для отрицательных чисел и от 1.4e-45 до 3.4e38 — для положительных
Double (Двойной)					Вещественные числа с плавающей точкой двойной точности в диапазоне примерно от -1.8e308 до -4.9e-324 для отрицательных чисел и от 4.9e-324 до 1.8e308 — для положительных
Byte (Байт)						Целые числа от 0 до 255
Currency (Деньги)					Числа в диапазоне от -922337203685477.5808 до 922337203685477.5808
Boolean (Логический булевский,)	True
				False			true (истина, да) или false (ложь, нет); возможны только два значения
Date (Дата)						Содержит число, представляющее дату от 1.01.100 до 31.12.9999
Null				Null			Этот тип данных имеет одно значение — null, обозначающее отсутствие какого бы то ни было допустимого значения
Empty (Пустой)			Empty			Этот тип данных имеет одно значение — Empty, обозначающее, что переменная не инициализирована
Error							Содержит номер ошибки
Object (объект)						Программный объект, определяемый своими свойствами. 

Для преобразования данных из одного типа в другой служат специальные функции. Так например, числа можно хранить как данные одного из 6 типов. Однако не все эти типы равноценны с точки зрения точности представления чисел и занимаемого места в памяти. Если вы хотите преобразовать число 3.14 в целое, то тип Byte окажется более экономным, чем Integer. Для приведения числового значения переменной x к типу Integer используется функция Cint(x), а для приведения к типу Byte — функция CByte(x).
Примеры:

15		‘ Целое число
-25.67		‘ Вещественное число с фиксированной точкой
-28.5e-3		‘ Вещественное число с плавающей точкой
"Привет всем!"	‘ Строка символов’

Дату и время можно представить непосредственно с помощью цифр, используя ведущий и заключительный символ #. При этом разделителем компонент даты является либо дефис, либо прямой слэш, а разделителем компонент времени — двоеточие; дата от времени разделяются пробелом. Однако формат отображения (а не храненения) даты определяется настройками компьютера.
Примеры:

#8-12-2004#
#8-12-2004 17:12:36#
#8/12/2004#
#8/12/2004 17:12#

Значение Empty имеет объявленная переменная, которой еще не присвоено значение. Это значение ведет себя как 0 в операциях над числами и как пустая строка — в операциях над строками. Значение Empty нельзя присвоить с помощью оператора присваивания, оно назначается автоматически при создании переменной без присваивания ей начального значения.
Значение Null означает отсутствие допустимого значения. Переменная может получить его в результате некоторых операций над ней, в том числе и путем непосредственного присваивания ей этого значения. В отличие от Empty, значение Null можно присвоить переменной с помощью оператора присваивания.

В VBScript, в отличие от JavaScript, строковые значения заключаются только в двойные кавычки. Одинарные кавычки для этой цели не допускаются.

3. Переменные и операторы присваивания

Переменная является контейнером для хранения данных. Данные, сохраняемые в переменной, называют значениями этой переменной. Переменная имеет имя — последовательность букв, цифр и символа подчеркивания без пробелов и знаков препинания, начинающаяся обязательно с буквы или символа подчеркивания. Таким образом, имя переменной не должно начинаться с цифры или знака препинания.
Переменную можно объявить с помощью оператора Dim:
Dim имя_переменной

Переменная, объявленная с помощью оператора Dim, имеет значение Empty. Одним оператором Dim можно объявить несколько переменных, например,
Dim x, y, myvar

Вместе с тем, объявленная оператором Dim переменная, которой не присвоено конкретное значение, уже имеет значение Empty. Чтобы убедиться в этом, выполните следующий HTML-код:

< HTML>
< SCRIPT LANGUAGE = VBScript>
Dim x
MsgBox x = Empty, 0, "Значение x равно Empty?"

< /SCRIPT>
< /HTML>

Чтобы присвоить переменной значение, используют следующие выражения:
имя_переменной = значение
Let имя_переменной = значение
Set имя_переменной = значение

Оператор Let не является обязательным для присваивания значения переменной. Оператор Set используется для присваивания переменной ссылки на объект, в том числе и при создании нового объекта с помощью специальной функции CreateObject().

Примеры:

x = "Привет всем!"
Let NumberOfDays = 365

Set MyTextBox = txtcontrol
MyTextBox.Value = "Привет всем!"

Вместо оператора Dim можно использовать операторы Private и Public для объявления соответственно локальных (частных) и глобальных переменных.

4. Массивы

Оператор Dim может использоваться не только для создания обычных переменных, но и для задания массивов. Массив может быть статическим (с постоянным количеством элементов) или динамическим (с заранее неопределенным количеством элементов). Массивы могут быть одномерными и многомерными (до 60 измерений). Одномерный статический массив определяется следующим образом:
Dim имя_массива(n)

Здесь n — количество элементов массива минус 1. Индексация элементов массива начинается с 0. Таким образом, число n в определении массива — индекс последнего элемента.
Многомерный статический массив задается аналогичным образом, но в круглых скобках через запятую указываются количества элементов минус 1 по каждому измерению. Например, следующий оператор задает двумерный массив из 8 строк и 3-х столбцов:
Dim myarray(7, 2)

Для получения значения элемента массива используется выражение вида:
имя_массива(индексы)

Например, для получения значения элемента двумерного массива myarray, находящегося в 3-й строке и 2-м столбце, можно воспользоваться таким выражением: myarray(2, 1).
В уже заданном статическом массиве нельзя изменить количество элементов и размерностей. В динамическом массиве, напротив, это можно делать сколько угодно раз. Динамический массив задается аналогично статическому, но в круглых скобках ничего не указывается:
Dim имя_массива()

Динамический массив отличается от статического тем, что позволяет устанавливать и изменять количество элементов в программе по мере необходимости. В случае многомерных массивов количество элементов можно изменить только для последнего измерения. После определения динамического массива можно использовать оператор назначения его длины (количества элементов):
Redim имя_массива(n)

Здесь n — количество элементов массива минус 1.

Пример:

 
Dim myarray()		' Определение динамического массива
Redim myarray(1) 	' Установка длины массива равной 2
' Определение элементов массива
myarray(0) = "Вася"
myarray(1) = "Маша"
' Вывод строки со значениями элементов массива: "Вася Маша"
MsgBox myarray(0)  + "  " + myarray(1)

Если в программе изменяется длина массива, то значения его уже определенных элементов элементов могут быть потеряны.

Пример:

 
Dim myarray()		' Определение динамического массива
Redim myarray(1) 	' Установка длины массива равной 2
' Определение элементов массива
myarray(0) = "Вася"
myarray(1) = "Маша"
Redim   myarray(2)	' Установка новой длины массива, равной 3
myarray(2) = 3.14	' Установка значения 3-го элемента массива
' Вывод строки со значениями элементов массива: строка пуста
MsgBox myarray(0)  + "  " + myarray(1)

Для сохранения значений динамического массива при изменении его длины используется ключевое слов Preserve (предохранить):
Redim Preserve имя_массива(n)

Пример:

 
Dim myarray()		' Определение динамического массива
Redim myarray(1) 	' Установка длины массива равной 2
' Определение элементов массива
myarray(0) = "Вася"
myarray(1) = "Маша"
Redim   Preserve myarray(2)	' Установка новой длины массива, равной 3
myarray(2) = 3.14	' Установка значения 3-го элемента массива
' Вывод строки со значениями элементов массива: "Вася Маша 3.14"
 MsgBox myarray(0)  + "  " + myarray(1) + "  " + Сstr(myarray(2))

При работе с массивами, особенно динамическими, часто требуется знать их длину. Для этой цели служат две функции:
Lbound — возвращает наименьший индекс для данного массива
Ubound — возвращает наибольший индекс массива. Количество элементов всегда на 1 больше этого значения

В следующем примере длина существующего массива myarray увеличивается на 1 с сохранением всех его уже имеющихся значений:
Redim Preserve myarray(Ubound(myarray) + 1) /

5. Константы

Переменные, значения которых нельзя изменять, называются константами. Лучше сказать, что константы это именованные и неизменяемые значения.
Константа задается следующим оператором:
Const имя_константы = значение

Имя константы задается так же, как и имя переменной.
В VBScript имеется большое количество предопределенных констант, некоторые из них приведены ниже.

Константы системных цветов

Константа	Значение 	Цвет
vbBlack		&h00		Черный
vbRed		&hFF		Красный
vbGreen		&hFF00		Зеленый
vbYellow	&hFFFF		Желтый
vbBTue		&hFF0000	Голубой
vbMagenta	&hFF00FF	Малиновый
vbCyan		&hFFFF00	Циан
vbWhite		&hFFFFFF	Белый

Константы сравнения
Константа		Значение	Описание
vbBinaryCompare		0		Сравнение двоичных чисел
vbTextCompare		1		Сравнение текста
vbOatabaseCompare	2		Сравнение той части информации в базе данных,
					где была применена

Константы даты и времени
Константа		Значение		Описание
vbSunday			1		Воскресенье
vbMonday			2		Понедельник
vbTuesday			3		Вторник
vbWednesday			4		Среда
vbThursday			5		Четверг
vbFrlday			6		Пятница
ybSaturday			7		Суббота
vbFirstJan1			1		Неделя, когда наступило 1 января текущего года
vbFirstFourDays			2		Первая неделя, в которой было как минимум 4 дня
						нового года
vbFlrstFullWeek			3		Первая полная неделя года
vbUseSystem			0		Использование формата установок даты и времени, 
						принятой для этого компьютера
vbUseSystemDayOfWeek		0		Использовать установленный на данном компьютере
						первый день недели

Константы форматов даты
Константа		Значение	Описание
vbGeneralDate		0		Показывает дату и/или время в формате, 
					принятом на данном компьютере.
 					Для вещественных чисел указывает дату и время. 
					Для целых — только дату. 
					Для чисел, меньших 1, отобржаается только время
vbLongDate		1		Показывает дату в полном виде в формате, 
					принятом на данном 
компьютере
vbShortDate		2		Показывает дату в кратком виде в формате,
					принятом на данном 
компьютере
vbLongTime		3		Показывает время в полном виде в формате,
					принятом на данном компьютере
vbShortTime		4		Показывает время в кратком виде в формате,
					принятом на данном компьютере

Константы для работы с содержимым файла
Константа		Значение	Описание
ForReading		1		Открывает файл только для чтения
ForWritIng          	2		Открывает файл для записи. Если существует файл
					с таким же названием, сначала очищает его содержимое
ForAppending		8		Открывает файл для записи в конец

Строковые константы
Константа		Значение		Описание
vbCr			Chr(13)			Возврат каретки
vbCrLf			Chr(13) & Chr(10)	Возврат каретки и перевод строки
vbLf			Chr(10)			Перевод строки
vbNewLine					Знак перевода строки, 
						соответствующий данной платформе
vbNullChar		Chr(0)			Символ, имеющий значение 0
vbNullString					Строка, имеющая нулевое значение 
						(это может быть не только пустая строка)
vbTab			Chr(9)			Горизонтальная табуляция

Логические константы
Константа		Значение	Описание
TristateTrue		1		Истина
TristateFalse		0		Ложь
TristateUseDefault	2		Значение, используемое по умолчанию

Константы типа переменной
Константа	Значение	Описание
vbEmpty		0		Не определена (по умолчанию)
vbNull		1		Не содержит корректных данных
vblnteger	2		Целое число
vbLong		3		Длинное целое
vbSingle	4		Вещественное обычной точности
vbDouble	5		Вещественное двойной точности
vbCurrency	6		Переменная в принятом формате для валюты
vbDate		7		Переменная в принятом формате для даты
vbStnng		8		Строковая переменная
vbObject	9		Объект
vbError		10		Переменная в принятом формате для ошибки
vbBoolean	11		Логическая переменная
vbVariant	12		Признак (используется только для массива признаков)
vbDataObject	13		Объект для доступа к данным 
vbDecimal	14		Десятичное число
vbByte		17		Байт
vbArray		8912		Массив

6. Операторы

В программах на VBScript каждое выражение обычно размещается в отдельной строке и не завершается никаким специальным символом окончания. При необходимости расположить в одной строке несколько выражений последние разделяются двоеточием. Запись одного выражения (обычно очень длинного) можно перенести на другую строку. При этом используется знак продолжения — пробел и следующий за ним символ подчеркивания.
Примечание
В JavaScript одиночное выражение в одной строке можно завершать, а можно и не завершать точкой с запятой. Несколько выражений в одной строке разделяются точкой с запятой. При переносе записи выражения на другую строку знаки продолжения не предусмотрены.

6.1. Комментарии

Оператор комментария позволяет вставить в программу неинтерпретируемый текст, служащий лишь программисту. Он представляется одинарным апострофом (одинарной верхней кавычкой). Все, что расположено правее его, является комментарием, а не кодом программы. Комментарий может располагаться с начала строки или в строке с программным кодом, но правее его. Комментарии могут быть многострочными. В этих случаях каждая строка комментария должна начинаться с апострофа.

Пример:

‘ Пример программы,
‘  которая выводит диалоговое окно
 x = "Привет"		‘ Это текст сообщения
MsgBox x		‘ Открытие диалогового окна с сообщением

Примечание
В JavaScript для однострочных комментариев используются символы //, а для многострочных — /* … */

6.2. Арифметические операторы

Применение арифметических операторов к числовым данным подчиняется правилам математики. Однако они могут быть применены и к данным других типов. В частности, оператор сложения + для строковых данных выполняет их склейку, т.е. приписывает второй операнд к концу первого.


Оператор	Название		Пример 
+		Сложение		X + Y
-		Вычитание		X - Y
*		Умножение		X * Y
/		Деление			X / Y
^		Возведение в степень 	X ^ Y

6.3. Операторы сравнения

Результатом вычисления элементарного выражения, содержащего оператор сравнения и операнды (сравниваемые данные), является логическое значение, то есть true или false. Так, если условие выполняется (верно, справедливо), то возвращается true. В противном случае возвращается false.


Оператор	Название			Пример 
= 		Равно				X ==Y
<>		Не равно			X <> Y
>		Больше, чем			X > Y
>=		Больше или равно (не меньше)	X >= Y
<		Меньше, чем 			X < Y
<=		Меньше или равно (не больше)	X <= Y

Обратите внимание, что операторы равенства и присваивания обозначаются одинаково. Интерпретатор VBScript различает их по контексту их применения в выражении.

Примечание
В JavaScript для оператора равенства используются два подряд следующих символа=, а для оператора присваивания — одинарный символ =

6.4. Логические операторы

Логические данные, обычно получаемые с помощью элементарных выражений, содержащих операторы сравнения, можно объединять в более сложные выражения. Для этого используются логические (булевские) операторы.


Оператор	Название		Пример
Not		Отрицание (НЕ)		!X
And		И			X And Y
Or		ИЛИ			X Or Y
Xor		Исключающее ИЛИ		X Xor Y
Eqv		Эквивалентность		X Eqv Y
Imp		Импликация		X Imp Y
Логические выражения принимают значения True (Истина) или False (Ложь). Смысл первых трех операторов такой же как и операторов !, && и || в JavaScript . Действие остальных операторов можно выразить, используя булеву алгебру, через НЕ, И и ИЛИ следующим образом:


Оператор	Эквивалентное выражение
X Imp Y		Not X Or Y
X Eqv Y		(X Imp Y) And (Y Imp X)
X Xor Y		(X And Not Y) Or (Not X And Y)

Примечание
В JavaScript нет операторов исключающего ИЛИ, эквивалентности и импликации. Однако нетрудно написать собственные функции, которые будут вычислять соответствующие выражения.

6.5. Строковые операторы

К строковым данным применим оператор склейки (конкатенации). В результате действия этого оператора к концу первой строки приписывается вторая строка. В качестве символа оператора склейки строк можно использовать + и &.
Пример:
x = "Саша"
MsgBox x +  " и " + "Маша"	‘ Окно с сообщением "Саша и Маша"
MsgBox x & " любит " & "Машу"	‘ Окно с сообщением "Саша любит Машу"

6.6. Операторы условного перехода

Оператор If
Оператор условного перехода if позволяет реализовать структуру условного выражения если …, то …, иначе …
Оператор If имеет несколько вариантов синтаксиса:
If условие Then выражение

If условие Then
выражения
End If

If условие-1 Then
[выражения-1]
[ElseIf условие-2 Then
[выражения-2]] …
[Else
[выражения-n]]
End If

Здесь квадратные скобки указывают лишь на то, что заключенные в них элементы синтаксической конструкции не являются обязательными. Обратите внимание, что блоков вида ElseIf может быть сколько угодно, в то время как блок вида Else может быть использован не более одного раза.

Оператор Select Case
Когда требуется вычислить значение выражения и сравнить его со значениями из заданных списков, удобно использовать оператор Select Case:
Select Case тестируемое_выражение
[Case список_значений-1
[выражения-1]]
[Case список_значений-2
[выражения-2]]

[Case список_значений-n
[выражения-n]]
[Case Else
[выражения-n+1]]
End Select

Здесь квадратные скобки указывают лишь на то, что заключенные в них элементы синтаксической конструкции не являются обязательными. Список значений может состоять из одного или нескольких элементов. В последнем случае они разделяются запятыми.
С помощью оператора Select Case вычисляется значение тестируемого выражения, которое последовательно сравнивается со значениями из списков блоков Case. Если значение тестируемого выражения совпадает с каким-нибудь значением из списка какого-нибудь блока Case, то выполняются выражения, соответствующие этому блоку. Если значение тестируемого выражения входит в несколько списков, то выполняются выражения самого первого блока Case. После выполнения выражений блока Case управление вычислительным процессом передается оператору, непосредственно следующему за End Select. Если ни один из списков значений, заданных в блоках Case, не содержит значения тестируемого выражения, то выполняются выражения блока Case Else (при его наличии). Если блок Case Else отсутствует, то управление передается оператору , непосредственно следующему за End Select.

Пример:

x = InputBox("Сколько Вам лет?")
Select Case x
Case Empty
	MsgBox "Вы ничего не ввели"
Case 20,21,22,23,24,25
	MsgBox "У Вас все впереди"
Case 40,41,42,43,44,45
	MsgBox "Вы достигли главного"
Case Else
	MsgBox "Вы ищете свой путь в жизни"
End Select
Примечание
В JavaScript близким по смыслу к Select Case является оператор switch

6.7. Операторы цикла

Оператор цикла обеспечивает многократное выполнение блока программного кода до тех пор, пока не выполнится некоторое условие. В VBScript имеются несколько операторов цикла.

Оператор For … Next
Оператор цикла со счетчиком циклов имеет следующий синтаксис:
For счетчик=начальное_значение To конечное_значение [Step приращение]
выражения
Next

При выполнении этого оператора сначала переменной счетчик присваивается начальное значение. Если это значение не равно заданному конечному значению, то выполняются выражения, указанные в теле оператора цикла. В противном случае выражения не вычисляются, а управление передается оператору, непосредственно следующему за Next. Затем значение счетчика увеличивается на величину приращения, указанную после ключевого слова Step (если его нет, то на 1). Новое значение счетчика сравнивается с конечным значением и далее все повторяется описанным выше способом.

Пример:
‘ Заполнение массива квадратами первых десяти натуральных чисел
Dim myarray(9)
For i=1 To 10
	myarray(i-1) = x^2
Next

Оператор For Each … Next
Оператор For Each … Next позволяет организовать цикл по элементам массива или по объектам из некоторого множества, когда их количество заранее не известно. Этот оператор выполняет заданные выражения для каждого элемента из указанного множества. Он имеет следующий синтаксис:
For Each элемент In множество
выражения
Next

Параметр множество задает имя массива или коллекцию объектов. Параметр элемент — переменная, которая в процессе выполнения оператора цикла автоматически принимает в качестве значения ссылку на элемент массива или объект.
For ... Next — выполняет часть кода заданное число раз.

Dim intSalary (10)
For intCounter = 0 to 10
intSalary(intCounter) = 20000 
Next
For Each ... Next Statement — выполняет часть кода для всех элементов массива или коллекции.
For Each Item In Request.QueryString("MyControl")
Response.Write Item & "< BR>"
Next
Оператор Do ... Loop
Do ... Loop — выполняет часть кода до тех пор, пока условие справедливо, или до тех пор, пока оно не станет выполняться (в зависимости от конструкции).
Do While strDayOfWeek <> "Суббота" And strDayOfWeek <> "Воскресенье"
MsgBox ("Вставай, пора работать!")
…
Loop

Do
MsgBox ("Вставай, пора работать!")
Loop Until strDayOfWeek = "Суббота" Or StrDayOfWeek = "Воскресенье"
Оператор While ... Wend
While ... Wend — выполнет блок кода, пока выполняется условие.
While strDayOfWeek о "Суббота" And strDayOfWeek о "Воскресенье"
MsgBox ("Вставай, пора работать!")
…
Wend

7.Функции

В VBScript есть некоторое количество функций, используемых для управления переменными и доступа к их значениям. Их можно разделить на несколько категорий:
	
	Функции преобразования
	Функции даты/времени
	Математические функции
	Функции управления объектами
	Функции инициализации интерпретатора кода сценария
	Строковые функции
	Функции проверки переменных
Для получения полного описания каждой функции можно воспользоваться, например, справочной системой приложения, в котом VBScript установлен.

Функции преобразования
Эти функции используются для преобразования значений переменных разных типов.

Функция	Описание
Asс	Возвращает кодовый номер ANSI первого символа в строке
AscB	To же, но используется для обработки однобайтовых данных.
	 Возвращает результат для первого байта
AscW	To же, но используется для символов Unicode.
	 Возвращает символ кода Wide, что позволяет преобразование из Unicode в ANSI
Chr	Возвращает строку символов с соответствующими номерами
ChrB	To же, но используется для обработки однобайтовых данных, содержащихся в строке.
	 Возвращает всегда один байт
ChrW	To же, но используется для символов Unicode.
	Возвращает символ кода Wide, что позволяет преобразование из Unicode в ANSI
Cbool	Возвращает аргумент, преобразованный в признак логического типа
Cbyte	Возвращает аргумент, преобразованный в признак типа "байт"
Cdate	Возвращает аргумент, преобразованный в признак типа даты
СDbl	Возвращает аргумент, преобразованный в признак числа двойной точности
Cint	Возвращает аргумент, преобразованный в признак целого числа
CLng	Возвращает аргумент, преобразованный в признак длинного целого
CSng	Возвращает аргумент, преобразованный в признак числа обычной точности
CStr	Возвращает аргумент, преобразованный в признак в виде строки
Fix	Возвращает целую часть числа
Hex	Возвращает строку, представляющую собой аргумент в шестнадцатеричной
	 системе счисления
Int	Возвращает целую часть числа
Oct	Возвращает строку, представляющую собой аргумент в восьмеричной 
	системе счисления
Round	Возвращает число, округленное до заданного числа десятичных позиций
Sgn	Возвращает целое число, отражающее знак аргумента

Функции даты/времени Эти функции возвращают текущие дату и время по компьютерному системному таймеру или управляют существующими значениями. Функция Описание Date Возвращает текущую системную дату DateAdd Возвращает дату с добавленным заданным временным интервалом DateDiff Возвращает число дней, недель или лет между двумя заданными датами DatePart Возвращает только день, месяц или год заданной даты DateSeria1 Возвращает-значение в формате Date для заданных года, месяца и дня DateValue Возвращает значение в формате Date Day Возвращает число от 1 до 31, отражающее день месяца Hour Возвращает число от 0 до 23, отражающее часы дня Minute Возвращает число от 0 до 59, отражающее минуты Month Возвращает число от 1 до 12, отражающее месяц в году MonthName Возвращает название данного месяца в виде строки Now Возвращает текущие дату и время Second Возвращает число от 0 до 59, отражающее секунды Time Возвращает значение в формате Date для текущего системного времени TimeSerial Возвращает значение в формате Date для заданных часа, минуты и секунды ТimeValue Возвращает значение в формате Date, содержащее время Weekday Возвращает число, отражающее день недели WeekdayName Возвращает название данного дня недели в виде строки Year Возвращает число, отражающее год

Математические функции Эти функции осуществляют математические операции над переменными, содержащими численные значения. Функция Описание Atn Возвращает арктангенс числа Cos Возвращает косинус угла Ехр Возвращает экспоненту в заданной степени Log Возвращает натуральный логарифм числа Randomize Инициализирует генератор случайных чисел Rnd Возвращает случайное число Sin Возвращает синус угла Sqr Возвращает квадратный корень из числа Tan Возвращает тангенс угла Функции управления объектами Эти функции используются для управления объектами там, где это нужно. Функция Описание CreateObject Создает и возвращает ссылку на объект ActiveX или OLE Automation GetObject Возвращает ссылку на объект Acti'veX или OLE Automation LoadPicture Возвращает графический объект Функции инициализации интерпретатора кода сценария Эти функции возвращают версию интерпретатора кода сценария. Функция Описание ScriptEngine Строка, содержащая основной, дополнительный номера версии и номер разработки интерпретатора ScriptEngineMajorVersion Основной номер версии интерпретатора ScriptEngineMinorVersion Дополнительный номер версии интерпретатора ScriptEngineBundVersion Номер разработки интерпретатора Строковые функции Эти функции используются для управления строковыми значениями переменных. Функция Описание Filter Возвращает массив, отобранный по заданному критерию из заданного массива строк FormatCurrency Возвращает строку, отформатированную для представления денежных сумм FormatDateTime Возвращает строку, отформатированную для представления даты и времени FormatNumber Возвращает строку, отформатированную как число FormatPercent Возвращает строку, отформатированную для представления процентного отношения InStr Возвращает место первого появления одной строки InStrB To же, но используется для работы с отдельными байтами. Возвращает положение байта, а не символа InStrRev To же, что и InStr, но начинается с конца строки Join Возвращает строку, образованную соединением всех строк массива Lcase Возвращает строку, все символы которой преобразованы в cтрочные Left Возвращает заданное число символов от левого конца строки LeftB To же, но для работы с байтами. Вместо числа символов — число байтов Len Возвращает длину строки или количество байт, необходимое для переменной LenB To же, но для работы с байтами. Вместо числа символов — число байтов Ltrim Возвращает копию строки без начальных пробелов Mid Возвращает заданное количество символов из строки MidB To же, но для работы с байтами. Вместо числа символов — число байтов Replасе Возвращает строку, в которой одна заданная последовательность заменена другой заданное число раз Right Возвращает заданное число символов от правого конца строки RightB To же, но для работы с байтами. Вместо числа символов — число байтов Rtrim Возвращает копию строки без оконечных пробелов Space Возвращает строку, состоящую из заданного количества пробелов Split Возвращает одномерный массив, состоящий из заданного числа подстрок StrComp Возвращает значение, отражающее результат сравнения строк String Возвращает строку заданной длины, образованную повторением одного символа StrReverse Возвращает "отраженную" строку, в которой порядок символов противоположен исходной Тrim Возвращает копию строки без ограничивающих пробелов Ucase Возвращает строку, все символы которой преобразованы в прописные Функции проверки переменных Эти функции используются для определения типа информации, находящейся в переменной. Функция Описание IsArray Возвращает логическое значение (True/False), отражающее, является ли переменная массивом IsDate Возвращает логическое значение (True/False), отражающее, может ли значение переменной быть преобразовано в формат даты/времени IsEmpty Возвращает логическое значение (True/False), отражающее, инициализирована ли переменная IsNull Возвращает логическое значение (True/False), отражающее, содержит ли переменная некорректные данные IsNumeric Возвращает логическое значение (True/False), отражающее, является ли значение переменной числовым IsObject Возвращает логическое значение (True/False), отражающее, является ли переменная ссылкой на действующий объект ActiveX или OLE Automation VarType Возвращает число, отображающее номер типа переменной Обработка ошибок On Error Resume Next — указывает, что при появлении ошибки необходимо ее игнорировать и начать дальнейшую обработку кода со следующей строки. Err — объект, содержащий информацию об ошибках выполнения. Возможности для обработки ошибок в VBScript ограничены, и для выяснения, произошла ли ошибка, необходимо явно проверять объект Err. Процедуры: Call — необязательный метод для вызова подпрограммы. Function — используется для объявления функции. Sub — используется для объявления подпрограммы. Другие ключевые слова Rem — старый метод для добавления комментариев в код. Option Explicit — заставляет вас объявлять переменную до того, как она может быть использована.

Hosted by uCoz