Функции преобразования типов данных




Каждая из следующих функций преобразует выражение к соответствующему типу данных.

Синтаксис


CBool(выражение)

CByte(выражение)

CCur(выражение)

CDate(выражение)

CDbl(выражение)

CDec(выражение)

CInt(выражение)

CLng(выражение)

CSng(выражение)

CVar(выражение)

CStr(выражение)


 

Обязательный аргумент выражение является любым строковым выражением или числовым выражением.


Типы данных

В следующей таблице перечислены поддерживаемые типы данных, размеры, требуемые для сохранения значений, и диапазоны допустимых значений.

Тип данных Размер Диапазон значений
Byte(байт) 1 байт От 0 до 255.
Boolean(логический) 2 байт True или False.
Integer(целое) 2 байт От -32 768 до 32 767.
Long(длинное целое) 4 байт От -2 147 483 648 до 2 147 483 647.
Single (с плавающей точкой обычной точности) 4 байт От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
Double (с плавающей точкой двойной точности) 8 байт От -1,79769313486232E308 до-4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
Currency(денежный) 8 байт От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
Decimal (масштабируемое целое) 14 байт +/-79 228 162 514 264 337 593 543 950 335 без дробной части; +/-7,9228162514264337593543950335 с 28 знаками справа от запятой; минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001
Date(даты и время) 8 байт От 1 января 100 г. до 31 декабря 9999 г.
Object(объект) 4 байт Любой указатель объекта.
String(строка переменной длины) 10 байт + длина строки От 0 до приблизительно 2 миллиардов.
String(строка постоянной длины) Длина строки От 1 до приблизительно 65 400.
Variant (числовые подтипы) 16 байт Любое числовое значение вплоть до границ диапазона для типа Double.
Variant (строковые подтипы) 22 байт + длина строки Как для строки (String) переменной длины.
Тип данных, определяемый пользователем (с помощью ключевого словаType) Объем определяется элементами Диапазон каждого элемента определяется его типом данных.

Примечание. Массивы любых типов данных требуют 20 байт памяти плюс 4 байт на каждую размерность массива плюс число байт, требуемых для хранения данных.Объем памяти, требуемый для сохранения данных, рассчитывается как произведение числа элементов на размер элемента.Например, данные в одномерном массиве, который содержит четыре элемента типа Integer, требующих по 2 байт на элемент, занимают 8 байт. Вместе с 20 байт на массив и 4 байт на размерность общий требуемый объем составляет 32 байт.

Значение типа Variant, содержащее массив, требует 12 байт в дополнение к объему, требуемому массивом.

Возвращаемые типы

Имя функции определяет возвращаемый тип следующим образом:

Функция Тип Диапазон аргумента выражение
CBool Boolean Любая допустимая строка или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486232E308 до -4,94065645841247E-324 для отрицательных чисел; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных чисел.
CDec Decimal +/-79 228 162 514 264 337 593 543 950 335 без масштабирования, т.е. для чисел без дробной части. Диапазон чисел с 28 знаками в дробной части +/-7,9228162514264337593543950335. Минимальное ненулевое число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767 с округлением дробной части.
CLng Long От -2 147 483 648 до 2 147 483 647 с округлением дробной части.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных чисел; от 1,401298E-45 до 3,402823E38 для положительных чисел.
CVar Variant Диапазон значений Double для числовых значений.Диапазон значений String для нечисловых значений.
CStr String Возвращаемые значения функции CStr зависят от аргумента выражение.

Если переданное в функцию значение аргумента выражение находится вне допустимого диапазона для соответствующего типа данных, возникает ошибка.

Вообще говоря, функции преобразования типов данных используются для документирования программы.Это позволяет показать, что результат некоторой операции должен быть представлен определенным типом данных, а не типом, используемым по умолчанию.Например, функция CCur обеспечивает арифметические действия над числами в денежном формате в тех случаях, когда по умолчанию используются действия над числами с плавающей точкой обычной или двойной точности или над целыми числами.

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

Если дробная часть числа в точности равна 0,5, то функции CInt и CLng всегда округляют число до ближайшего четного числа.Например, 0,5 округляется до 0, а 1,5 до 2.Необходимо отличать функции CInt и CLng от функций Fix и Int, которые выполняют усечение, а не округление дробной части числа.Кроме того, функции Fix и Int всегда возвращают значение с тем же типом данных, который был передан в аргументе.

Чтобы определить, может ли аргумент дата быть преобразована к типу даты или времени, следует использовать функцию IsDate.Функция CDate распознает литералы даты и литералы времени, а также числа, которые попадают в приемлемый диапазон дат.При преобразовании числа в дату переводится целая часть числа.Любая дробная часть числа преобразуется во время суток, отсчитываемое от полуночи.

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

Для обеспечения совместимости с предыдущими версиями Visual Basic поддерживается также функция CVDate.Синтаксис функции CVDate совпадает с синтаксисом функции CDate, но CVDate возвращает значение с подтипом Date типа Variant, а не значение типа Date.Поскольку теперь определен внутренний тип данных Date, больше нет необходимости в использовании функции CVDate.Тот же результат получается при преобразовании выражения к типу Date, а затем присвоении его переменной типа Variant.Это соответствует преобразованию всех других внутренних типов данных к их эквивалентным подтипам Variant.

Примечание. Функция CDec не возвращает конкретный тип данных; вместо этого всегда возвращается значение типа Variant, преобразованное к подтипу Decimal.

В данном примере функция CBool используется для преобразования выражения к типу Boolean.Если результатом выражения является ненулевое значение, CBool возвращает True; в противном случае возвращается False.

Dim A, B, Check

A = 5: B = 5 ' Инициализирует переменные.

Check = CBool(A = B) ' Check содержит True.

 

A = 0 ' Определяет переменную.

Check = CBool(A) ' Check содержит False.

 

В данном примере функция CByte используется для преобразования выражения к типу Byte.

Dim MyDouble, MyByte

MyDouble = 125.5678 ' MyDouble имеет тип Double.

MyByte = CByte(MyDouble) ' MyByte содержит 126.

 

В данном примере функция CCur используется для преобразования выражения к типу Currency.

Dim MyDouble, MyCurr

MyDouble = 543.214588 ' MyDouble имеет тип Double.

MyCurr = CCur(MyDouble * 2) ' Преобразует результат выражения MyDouble * 2

(1086.429176) в значение типа Currency (1086.4292).

 

В данном примере функция CDate используется для преобразования строки к типу Date.В общем случае явное задание даты и времени в виде строки (как показано в данном примере) не рекомендуется.Вместо этого следует использовать текстовые константы даты и времени (например, #2/12/1969# и #4:45:23 PM#).

Dim MyDate, MyShortDate, MyTime, MyShortTime

MyDate = "February 12, 1969" ' Определяет дату.

MyShortDate = CDate(MyDate) ' Преобразует к типу Date.

 

MyTime = "4:35:47 PM" ' Определяет время.

MyShortTime = CDate(MyTime) ' Преобразует к типу Date.

 

В данном примере функция CDbl используется для преобразования выражения к типу Double.

Dim MyCurr, MyDouble

MyCurr = CCur(234.456784) ' MyCurr имеет тип Currency.

MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Преобразует результат к типу Double.

 

В данном примере функция CInt используется для преобразования выражения к типу Integer.

Dim MyDouble, MyInt

MyDouble = 2345.5678 ' MyDouble имеет тип Double.

MyInt = CInt(MyDouble) ' MyInt содержит 2346.

 

В данном примере функция CLng используется для преобразования выражения к типу Long.

Dim MyVal1, MyVal2, MyLong1, MyLong2

MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1 и MyVal2 имеют тип Doubles.

MyLong1 = CLng(MyVal1) ' MyLong1 содержит 25427.

MyLong2 = CLng(MyVal2) ' MyLong2 содержит 25428.

 

В данном примере функция CSng используется для преобразования выражения к типу Single.

Dim MyDouble1, MyDouble2, MySingle1, MySingle2

' MyDouble1 и MyDouble2 имеют тип Doubles.

MyDouble1 = 75.3421115: MyDouble2 = 75.3421555

MySingle1 = CSng(MyDouble1) ' MySingle1 содержит 75.34211.

MySingle2 = CSng(MyDouble2) ' MySingle2 содержит 75.34216.

 

В данном примере функция CStr используется для преобразования числового значения в строку (к типу String).

Dim MyDouble, MyString

MyDouble = 437.324 ' MyDouble имеет тип Double.

MyString = CStr(MyDouble) ' MyString содержит "437.324".

 

В данном примере функция CVar используется для преобразования выражения к типу Variant.

Dim MyInt, MyVar

MyInt = 4534 ' MyInt имеет тип Integer.

MyVar = CVar(MyInt & "000") ' MyVar содержит строку 4534000.

Функция Format

Возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата.

Синтаксис

Format(выражение[, формат[, первыйДеньНедели[, перваяНеделяГода]]])

Синтаксис функции Format содержит следующие элементы:

Элемент Описание
выражение Обязательный.Любое допустимое выражение.
формат Необязательный.Любое допустимое именованное или определяемое пользователем выражение формата.
первыйДеньНедели Необязательный.Константа, определяющая первый день недели.
перваяНеделяГода Необязательный.Константа, определяющая первую неделю года.

Ниже перечислены допустимые значения аргумента первыйДеньНедели:

Константа Значение Описание
vbUseSystem   Используется настройка NLS API.
vbSunday   Воскресенье (по умолчанию).
vbMonday   Понедельник.
vbTuesday   Вторник
vbWednesday   Среда.
vbThursday   Четверг.
vbFriday   Пятница.
vbSaturday   Суббота.

Ниже перечислены допустимые значения аргумента перваяНеделяГода:

Константа Значение Описание
vbUseSystem   Используется настройка NLS API.
vbFirstJan1   Неделя, которая содержит 1 января (по умолчанию).
vbFirstFourDays   Первая неделя, которая содержит по крайней мере четыре дня этого года.
vbFirstFullWeek   Первая полная неделя года.

 

Форматирование Выполняемые действия
Числа Использование стандартных числовых форматов или создание специальных числовых форматов.
Даты и время Использование стандартных форматов даты и времени или создание специальных форматов даты и времени.
Даты и время в числовом представлении Использование форматов даты и времени или числовых форматов.
Строки Создание специальных строковых форматов.

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

В данном примере показаны различные применения функции Format для форматирования значений с использованием стандартных и специальных форматов.Фактические символы, используемые в качестве разделителя даты (/), разделителя времени(:) и индикатора "AM/PM", определяются текущими национальными настройками.В среде разработчика для изображения дат и времени используются установленные в этой среде краткий формат времени и даты, соответственно.Во время выполнения программы для изображения дат и времени используются краткие системные форматы даты и времени, которые могут отличаться от установленных в среде разработчика.В данном примере используются национальные настройки, принятые в России.

В среде разработчика MyTime и MyDate изображаются в текущем системном кратком формате времени и даты соответственно.

 

Dim MyTime, MyDate, MyStr

MyTime = #17:04:23#

MyDate = #January 27, 1993#

 

' Возвращает текущее системное время в длинном системном формате.

MyStr = Format(Time, "Длинный формат времени")

 

' Возвращает текущую системную дату в длинном системном формате.

MyStr = Format(Date, "Длинный формат даты")

 

MyStr = Format(MyTime, "h:m:s") ' Возвращает "17:4:23".

MyStr = Format(MyTime, "hh:mm:ss AMPM") ' Возвращает "05:04:23 PM".

 

MyStr = Format(MyDate, "dddd, mmm d yyyy") ' Возвращает "Wednesday, Jan 27 1993".

' Если формат не указан, возвращается строка.

MyStr = Format(23) ' Возвращает "23".

 

' Специальные форматы.

MyStr = Format(5459.4, "##,##0.00") ' Возвращает "5,459.40".

MyStr = Format(334.9, "###0.00") ' Возвращает "334.90".

MyStr = Format(5, "0.00%") ' Возвращает "500.00%".

 

MyStr = Format("ПРИВЕТ", "<") ' Возвращает "привет".

MyStr = Format("Вот он какой", ">") ' Возвращает "ВОТ ОН КАКОЙ".

Функция Hex

Возвращает значение типа String, задающее шестнадцатеричное представление указанного числа.

Синтаксис

Hex(число)

Обязательный аргумент число представляет любое допустимое числовое выражение или строковое выражение.

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

число Возвращаемое значение
Null Пустое значение.
Empty Нуль (0).
Любое другое число До 8 шестнадцатеричных символов.

Для явного представления шестнадцатеричного числа без вызова функции следует поставить перед ним символы &H. Например, &H10 это десятичное число 16 в шестнадцатеричном представлении.

В данном примере функция Hex используется для получения шестнадцатеричного представления числа.

 

Dim MyHex

MyHex = Hex(5) ' Возвращает 5.

MyHex = Hex(10) ' Возвращает A.

MyHex = Hex(459) ' Возвращает 1CB.

Функция Oct

Возвращает значение типа Variant (String), содержащее восьмеричное представление указанного числа.

Синтаксис

Oct(число)

Обязательный аргумент число представляет любое допустимое числовое выражение или строковое выражение.

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

число Возвращаемое значение
Null Null.
Empty Нуль (0).
Любое другое число До 11 восьмеричных символов.

Для явного представления восьмеричного числа без вызова функции следует поставить перед ним символы &O. Например, &O10 это десятичное число 8 в восьмеричном представлении.

В данном примере функция Oct используется для получения восьмеричного представления числа.

Dim MyOct

MyOct = Oct(4) ' Возвращает 4.

MyOct = Oct(8) ' Возвращает 10.

MyOct = Oct(459) ' Возвращает 713.

Функция Str

Возвращает значение типа Variant (String), являющееся строковым представлением числа.

Синтаксис

Str(число)

Обязательный аргумент число имеет тип Long и может задаваться любым допустимым числовым выражением.

При преобразовании числа в строку в начале строки обязательно резервируется позиция для знака числа. Если число является положительным, возвращенная строка будет содержать пробел на месте знака.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format. В отличие от функции Str, функция Format не резервирует позицию для знака положительного числа.

Примечание. В качестве допустимого десятичного разделителя функция Str воспринимает только точку (.). При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr.

В данном примере функция Str используется для получения строкового представления числа. При преобразовании числа в строку в начале строки обязательно резервируется позиция для знака числа.

 

Dim MyString

MyString = Str(459) ' Возвращает " 459".

MyString = Str(-459.65) ' Возвращает "-459.65".

MyString = Str(459.001) ' Возвращает " 459.001".

Функция Val

Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа.

Синтаксис

Val(строка)

Обязательный аргумент строка является любым допустимым строковым выражением.

Функция Val прекращает чтение строки на первом символе, который она не может распознать в качестве части числа. Символы, которые часто рассматриваются в качестве частей числовых значений, типа знака доллара и запятых, не распознаются. Однако эта функция распознает префикс основания &O (для восьмеричных) и &H (для шестнадцатеричных значений). Пробелы, символы табуляции и символы перевода строк удаляются из значения аргумента.

В следующем примере возвращается числовое значение 1615198:

Val(" 1615 198-я ул. Н.Й.")

 

Следующая функция Val возвращает десятичное значение -1 для показанного шестнадцатеричного значения:

Val("&HFFFF")

 

Примечание. Функция Val распознает в качестве разделителя целой и дробной части только точку (.). Если существует возможность использовать другие разделители целой и дробной частей (например в национальных версиях приложений), следует применять для преобразования строки в число функцию CDbl.

В данном примере функция Val используется для возвращения чисел, содержащихся в строке.

Dim MyValue

MyValue = Val("2457") ' Возвращает 2457.

MyValue = Val(" 2 45 7") ' Возвращает 2457.

MyValue = Val("24 and 57") ' Возвращает 24.

РАЗНЫЕ ФУНКЦИИ

Функция Array

Возвращает значение типа Variant, содержащее массив.

Синтаксис

Array(arglist)

Обязательный аргумент arglist представляет разделенный запятыми список значений, присваиваемых элементам массива, содержащегося внутри значения типа Variant. Если аргументы не указываются, создается массив нулевой длины.

Для ссылки на элемент массива записывается имя переменной, за которым следуют скобки, содержащие номера индексов нужного элемента. В следующем примере первая инструкция создает переменную A типа Variant. Вторая инструкция присваивает массив переменной A. Последняя инструкция показывает, как присвоить другой переменной значение второго элемента массива.

Dim A As Variant

A = Array(10,20,30)

B = A(2)

Нижняя граница индексов массива, созданного с помощью функции Array, всегда равняется нулю. В отличие от массивов других типов, она не определяется нижней границей, заданной в инструкции Option Base.

Примечание. Значение типа Variant, не описанное как массив, все равно может содержать массив. Переменная типа Variant может содержать массив любого типа, за исключением строк фиксированной длины и определяемых пользователем типов. Хотя значение типа Variant, содержащее массив, концептуально отличается от массива, элементы которого имеют тип Variant, доступ к элементам массива осуществляется тем же способом.

В данном примере функция Array используется для возвращения значения типа Variant, содержащего массив.

Dim MyWeek, MyDay

MyWeek = Array("Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс")

' Предполагается, что нижняя граница индексов массива установлена равной 1

' (с помощью инструкции Option Base).

MyDay = MyWeek(2) ' MyDay содержит "Вт".

MyDay = MyWeek(4) ' MyDay содержит "Чт".

Функция Choose

Возвращает значение, выбранное из списка аргументов.

Синтаксис

Choose(индекс, вариант-1[, вариант-2,... [, вариант-n]])

Синтаксис функции Choose содержит следующие элементы:

Элемент Описание
индекс Обязательный. Числовое выражение или поле, значением которого является число, лежащее между 1 и числом элементов в списке.
вариант Обязательный. Выражение типа Variant, содержащее один из элементов списка.

Функция Choose возвращает значение из списка, выбранное на основании значения аргумента индекс. Если индекс равняется 1, возвращается первый элемент списка, если индекс равняется 2, возвращается второй элемент списка и т.п.

Функцию Choose можно использовать для выбора одного из возможных значений, представленных в виде списка. Например, если аргумент индекс имеет значение 3, вариант-1 = "один", вариант-2 = "два", а вариант-3 = "три", то Choose возвратит "три". Таким образом, удобно обрабатывать значения, выбираемые из группы переключателей.

Функция Choose вычисляет каждый элемент списка, несмотря на то, что возвращает только один из них. В некоторых случаях это приводит к нежелательным побочным эффектам. Например, если выражение, определяющее элементы списка, содержит функцию MsgBox, то соответствующие сообщения будут последовательно появляться на экране по мере вычисления каждого элемента списка, несмотря на то, что функцией Choose будет возвращен только один из них.

Функция Choose возвращает значение Null, если индекс меньше 1 или больше числа элементов в списке.

Если индекс не является целым числом, он округляется до ближайшего целого числа перед выполнением операции.

В данном примере функция Choose используется для выбора имени, соответствующего значению передаваемого в процедуру параметра Ind.

Function GetChoice(Ind As Integer)

GetChoice = Choose(Ind, "Быстрый", "Единый", "Федеральный")

End Function

Функция Command

Возвращает параметры командной строки указанные при запуске Microsoft Visual Basic или программы, разработанной с использованием Visual Basic.

Синтаксис

Command

При запуске Visual Basic из командной строки вся часть командной строки, расположенная после ключа /cmd, передается в программу как аргумент командной строки. В следующем примере cmdlineargs представляют собой аргументы, возвращаемые функцией Command.

VB /cmd cmdlineargs

Для приложений, разработанных с использованием Visual Basic и откомпилированных в исполняемый файл (.exe), Command возвращает аргументы, расположенные в командной строке после имени приложения. Например:

MyApp cmdlineargs

Способ изменения аргументов командной строки в пользовательском интерфейсе используемого приложения описан в разделе "Параметры командной строки" справочной системы.

В данном примере функция Command используется для передачи аргументов командной строки в функцию, которая возвращает их в переменной типа Variant, содержащей массив.

Function GetCommandLine(Optional MaxArgs)

'Описание переменных.

Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs

'Проверяет наличие MaxArgs.

If IsMissing(MaxArgs) Then MaxArgs = 10

'Задание правильной размерности массива.

ReDim ArgArray(MaxArgs)

NumArgs = 0: InArg = False

'Получает аргументы командной строки.

CmdLine = Command()

CmdLnLen = Len(CmdLine)

'Последовательный анализ всех символов командной строки.

For I = 1 To CmdLnLen

C = Mid(CmdLine, I, 1)

'Проверка на наличие пробела или табуляции.

If (C <> " " And C <> vbTab) Then

'Символы пробела и табуляции не обнаружены.

'Проверяет, является ли символ частью аргумента.

If Not InArg Then

'Начинается новый аргумент.

'Проверка количества аргументов.

If NumArgs = MaxArgs Then Exit For

NumArgs = NumArgs + 1

InArg = True

End If

 


'Добавление символа к текущему аргументу.

ArgArray(NumArgs) = ArgArray(NumArgs) + C

Else

'Найден символ пробела или табуляции.

'Устанавливает для флага InArg значение False.

InArg = False

End If

Next I

'Изменение размера массива для хранения аргументов.

ReDim Preserve ArgArray(NumArgs)

'Возвращает массив в качестве имени функции.

GetCommandLine = ArgArray()

End Function

Функция CreateObject

Создает и возвращает ссылку на объект ActiveX.

Синтаксис

CreateObject(class)

Аргумент class использует синтаксис appname.objecttype, который содержит следующие элементы:

Элемент Описание
appname Обязательный; Variant (String). Имя приложения, являющегося источником объекта.
Objecttype Обязательный; Variant (String). Тип или класс объекта, который следует создать.

Каждое приложение, поддерживающее программирование объектов, может создавать объекты по крайней мере одного типа. Например, текстовым процессором могут быть созданы объект Application (приложение), объект Document (документ) и объект Toolbar (панель инструментов).

Чтобы создать объект ActiveX, следует присвоить объектной переменной объект, возвращенный функцией CreateObject:

‘ Описывает объектную переменную, содержащую ссылку на объект.

‘ Предложение Dim as Object задает связывание на поздней стадии.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

Эти инструкции запускают приложение, являющееся источником объекта, в данном случае, электронную таблицу Microsoft Excel. После создания объекта следует присвоить ссылку на него предварительно описанной объектной переменной. В следующем примере доступ к свойствам и методам нового объекта осуществляется через объектную переменную ExcelSheet и другие объекты Microsoft Excel, включая объект Application и семейство Cells.

' Делает Excel видимым через объект Application.

ExcelSheet.Application.Visible = True

' Помещает текст в первую ячейку электронной таблицы.

ExcelSheet.Cells(1, 1).Value = "Это столбец A, строка 1"

' Сохраняет электронную таблицу в каталоге C:\test.doc.

ExcelSheet.SaveAs "C:\ TEST.DOC"

' Закрывает Excel, вызвав метод Quit объекта Application.

ExcelSheet.Application.Quit

' Освобождает объектную переменную.

Set ExcelSheet = Nothing

Описание объектной переменной с предложением As Object создает переменную, которая может содержать ссылку на объект любого типа. Однако доступ к объекту через эту переменную возможен на стадии позднего связывания; это означает, что связывание осуществляется при выполнении программы. Чтобы создать объектную переменную, обеспечивающую связывание на ранней стадии; т.е. связывание при компиляции программы, следует описать объектную переменную со специфическим кодом класса. Например, пользователь имеет возможность описать и создать следующие ссылки для Microsoft Excel:

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

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

Объект, возвращенный функцией CreateObject, может быть передан функции, принимающей объект в качестве одного из аргументов. Например, следующая инструкция создает и передает ссылку на объект Excel.Application:

Call MySub (CreateObject("Excel.Application"))

Примечание. Функцию CreateObject следует использовать в отсутствие текущего экземпляра объекта. Если имеется уже выполняющийся экземпляр объекта, запускается новый экземпляр, и создается объект указанного типа. При наличии текущего экземпляра или необходимости запуска приложения и загрузки файла можно использовать функцию GetObject.

Если объект зарегистрирован как уникальный, создается только один экземпляр этого объекта, вне зависимости от числа вызовов функции CreateObject.

В данном примере функция CreateObject создает ссылку (xlApp) на Microsoft Excel. Эта ссылка используется для доступа к свойству Visible Microsoft Excel, а затем для закрытия Microsoft Excel с помощью метода Quit. После этого ссылка очищается.

Dim xlApp As Object ' Переменная, которая будет содержать ссылку.

Set xlApp = CreateObject("excel.application")

' Необходимо задать для свойства Visible

' значение True, чтобы приложение было видимым.

xlApp.Visible = True

' Использование xlApp для доступа к другим объектам Microsoft Excel.

xlApp.Quit ' По окончании работы вызывается метод Quit для выхода

Set xlApp = Nothing ' из приложения. Ссылка очищается.

Функция CurDir

Возвращает значение типа Variant (String), представляющее текущий путь.

Синтаксис

CurDir[(диск)]

Необязательный аргумент диск является строковым выражением, указывающим существующий диск. Если диск не указан или аргумент диск является пустой строкой (""), функция CurDir возвращает путь к текущему диску.

В данном примере функция CurDir используется для определения текущего пути.

' Предположим, что текущий путь на диске C - "C:\WINDOWS\SYSTEM".

Предположим, что текущий путь на диске D - "D:\EXCEL".

' Предположим, что текущий диск - C.

Dim MyPath

MyPath = CurDir ' Возвращает "C:\WINDOWS\SYSTEM".

MyPath = CurDir("C") ' Возвращает "C:\WINDOWS\SYSTEM".

MyPath = CurDir("D") ' Возвращает "D:\EXCEL".

Функция Date

Возвращает значение типа Variant (Date), содержащее текущую системную дату.

Синтаксис

Date

Для установки системной даты используйте инструкцию Date.

В данном примере функция Date используется для определения текущей системной даты.

Dim MyDate

MyDate = Date ' MyDate содержит текущую системную дату.

Функция DateAdd

Возвращает значение типа Variant (Date), содержащее дату, к которой добавлен указанный временной интервал.

Синтаксис

DateAdd(interval, number, date)

Синтаксис функции DateAdd содержит следующие именованные аргументы:

Элемент Описание
interval Обязательный. Строковое выражение, указывающее тип добавляемого временного интервала.
number Обязательный. Числовое выражение, указывающее число временных интервалов, которое следует добавить. Оно может быть положительным (для получения более поздних дат) или отрицательным (для получения более ранних дат).
date Обязательный. Значение типа Variant (Date) или литерал даты, представляющий дату, к которой добавляется указанный временной интервал.

Ниже перечислены допустимые значения аргумента interval:


Значение Описание
yyyy Год.
Q Квартал.
m Месяц.
Y День года.
D День месяца.

 

w День недели.
ww Неделя.
h Часы.
n Минуты.
s Секунды.

 

 

Функция DateAdd предназначена для добавления или вычитания указанного временного интервала из значения даты. Например, с помощью этой функции можно вычислить дату, на 30 дней более позднюю, чем текущая, или время, на 45 минут более позднее, чем текущее.

Для добавления дней к аргументу date можно задавать временной интервал как день года ("y"), день месяца ("d") или день недели ("w").

Функция DateAdd не возвращает неправильных дат. Следующее выражение добавляет один месяц к 31 января:

DateAdd("m", 1, "31-янв-95")

В данном случае будет возвращена дата 28-фев-95, а не 31-фев-95. Если в качестве аргумента date указать 31-янв-96, то возвращается дата 29-фев-96, поскольку 1996 год является високосным.

Если будет получена дата, более ранняя, чем 100 год (т.е. вычитаемый временной интервал содержит больше лет, чем исходное значение date), возникнет ошибка.

Если number не является значением типа Long, оно округляется до ближайшего целого числа перед выполнением операции.

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

Dim FirstDate As Date ' Объявляет переменные.

Dim IntervalType As String

Dim Number As Integer

Dim Msg

IntervalType = "м" ' Интервал указывается в месяцах.

FirstDate = InputBox("Введите дату")

Number = InputBox("Введите число месяцев, которое следует добавить")

Msg = "Новая дата: " & DateAdd(IntervalType, Number, FirstDate)

MsgBox Msg

Функция DateDiff

Возвращает значение типа Variant (Long), указывающее число временных интервалов между двумя датами.

Синтаксис

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

Синтаксис функции DateDiff содержит следующие именованные аргументы:

Элемент Описание
interval Обязательный. Строковое выражение, указывающее тип временного интервала, который следует использовать при вычислении разности между датами date1 и date2.
date1, date2 Обязательные. Значения типа Variant (Date). Две даты, разность между которыми следует вычислить.
firstdayofweek Необязательный. Константа, указывающая первый день недели. Если этот аргумент опущен, считается, что неделя начинается с воскресенья.
firstweekofyear Необязательный. Константа, указывающая первую неделю года. Если этот аргумент опущен, первой неделей считается неделя, содержащая 1 января.

 

Допустимые значения аргумента interval – см. функцию DateAdd.

Ниже перечислены допустимые значения аргумента firstdayofweek:

Константа Значение Описание
vbUseSystem   Используется значение NLS API.
VbSunday   Воскресенье (по умолчанию).
VbMonday   Понедельник.
VbTuesday   Вторник.
VbWednesday   Среда.
VbThursday   Четверг.
VbFriday   Пятница.
VbSaturday   Суббота.

Ниже перечислены допустимые значения аргумента firstweekofyear:

Константа Значение Описание
vbUseSystem   Используется значение NLS API.
VbFirstJan1   Неделя, которая содержит 1 января (по умолчанию).
VbFirstFourDays   Первая неделя, которая содержит по крайней мере четыре дня нового года.
VbFirstFullWeek   Первая полная неделя года.

Функция DateDiff предназначена для определения числа указанных временных интервалов между двумя датами. Например, с помощью этой функции можно вычислить число дней между двумя датами или число недель между текущей датой и концом года.

Для вычисления числа дней между датами date1 и date2 можно использовать временные интервалы типа день года ("y") или день месяца ("d"). Если interval задается как день недели ("w"), возвращается число недель между двумя датами. Если date1 соответствует понедельнику, подсчитывается число понедельников между date1 и date2. При этом date2 учитывается, а date1 нет. Если interval задается в неделях ("ww"), функция DateDiff возвращает число календарных недель между двумя датами, т.е. число воскресений между date1 и date2. При этом дата date2 учитывается (если ей соответствует воскресенье), а date1 нет (даже если ей соответствует воскресенье).

Если date1 определяет дату, более позднюю, чем date2, возвращается отрицательное значение.

Аргумент firstdayofweek влияет на вычисления, использующие временные интервалы типа "w" и "ww".

Если дата задается как литерал даты, указанный год становится постоя



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: