Сделай Сам Свою Работу на 5

Преобразование строк и чисел





Преобразуя число в строку, VBA создает строку, состоящую из цифр этого числа и десятичной точки, если она присутствует в числе.

Если число очень большое или очень маленькое, то строка может представлять собой экспоненциальную форму, например:

Число 0,0000000003456

Строка “3.456Е-10”

Таблица 5

Комбинация операндов Результат
Число + строка Выдает сообщение о несоответствии типов, если число имеет числовой тип, а строка – строковый и результат присваивается строковой переменной.
Выполняется конкатенация, если число имеет тип Variant, а строка – тип String. Результат имеет тип String.
Выполняется арифметическое сложение, если число имеет числовой тип, а строка – тип Variant. Результат имеет числовой тип.
Выполняется арифметическое сложение, если в строке записано значение, которое можно преобразовать в число и результат присваивается числовой переменной.
Число + “3” Всегда выполняется арифметическое сложение, независимо от того, имеет ли число числовой тип или тип Variant, результат всегда – число.
3 + строка Выполняется арифметическое сложение, если строка содержит текст, который можно преобразовать в число и имеет тип Variant или String.
Число & строка Всегда выполняется конкатенация, независимо от типа переменных. Результат – String.

 



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

Преобразование булевых величин

При преобразовании булевых (логических) величин в числа, значение True преобразуется в 1, значение False – в 0. При преобразовании чисел в булевы величины, 0 преобразуется в False, а остальные числа в True.

При преобразовании булевых величин в строки, значение True преобразуется в строку “True”, а значение False в строку “False”.

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

CBool(“1”) результат True

Преобразование дат

При преобразовании даты в число получается число типа Double, содержащее количество дней, прошедших от 30 декабря 1899 г. до преобразуемой даты. Дробные числа обозначают точность до долей суток: 0 соответствует полуночи, 0.5 – полудню. Преобразование чисел в даты преобразуется так же, только наоборот. Например, дата 31 декабря 1899 г. 00.00 будет преобразована в число 1. Дата 31 декабря 1899 г. 12.00 – в число 1,5.



 


 

 

Область видимости

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

Однако бывают случаи, когда одна и та же переменная должна использоваться в нескольких процедурах одного модуля, например, для передачи какого-либо значения между процедурами. В этом случае выражение объявления переменной Dim помещают в самом начале модуля перед началом объявления процедур. Область видимости такой переменной ограничена модулем, такая переменная называется глобальной. Существует так же способ передачи информации между модулями.

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



Code(окно с кодом)->Procedure->Declarations

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

Глобальная переменная сохраняется, пока открыт этот файл, даже при смене модулей.

Dim — это область видимости переменной. В VBA предусмотрено 4 ключевых слова для определения области видимости переменных.

· Dim — используется в большинстве случаев. Если переменная объявлена как Dim в области объявлений модуля, то она будет доступна во всем модуле, если в процедуре — только на время работы этой процедуры;

· Private — при объявлении переменных в стандартных модулях VBA значит то же, что и Dim. Отличия проявляются только при создании своих классов;

· Public — такая переменная будет доступна всем процедурам во всех модулях данного проекта, если вы объявили ее в области объявлений модуля. Если вы объявили ее внутри процедуры, она будет вести себя как Dim;

· Static — такие переменные можно использовать только внутри процедуры. Эти переменные видны только внутри процедуры, в которой они объявлены, зато они сохраняют свое значение между разными вызовами этой процедуры. Обычно используются для накопления каких-либо значений. Например:

 

Static nVar1 As Integer

nVar1 = nVar1 + 1

MsgBox nVar1

 

Если нет никаких особых требований, то имеет смысл всегда выбирать область видимости Dim.

 

 


 

Операторы и выражения

Выражение – это величина или группа величин, объединенных в единую сущность. Каждое выражение имеет определенное и единственное значение определенного типа. Кроме того выражение может принимать значения Empty и Null. В состав выражения могут входить следующие элементы:

· константы;

· переменные;

· операторы;

· массивы;

· элементы массивов;

· функции.

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

Типы выражений языка VBA:

· Дата.

· Числовое выражение. Это выражение одного из числовых типов: Byte, Integer, Long, Single, Double, Currency. Выражения числового типа могут содержать строки, значениями которых являются числовые символы (такие строковые значения можно преобразовать в число).

· Строковое выражение. Выражения типа String могут содержать строковые или числовые значения, если их можно преобразовать в строку, операторы работы со строками.

· Логические выражения. Такие выражения имеют одно из булевых значений: True или False. Они могут содержать операторы сравнения и операнды, которые могут быть использованы в логических выражениях.

· Объектное выражение. Это выражение, содержащее ссылку на объект.

 

Оператор присваивания«=»

Работа оператора присваивания: операнду, стоящему слева от оператора присваивается значение, стоящее справа от оператора. В качестве значения может быть выражение, переменная, константа или величина. Оператор присваивания записывает значение, стоящее справа в участок памяти, отведенный под переменную, стоящую слева. Оператор присваивания имеет две синтаксические формы:

Let имя = значение

Имя = значение

Первая форма является наследственной о предыдущих версий Basic и сохранена для обеспечения преемственности, работают обе синтаксические формы одинаково.

В выражении справа от оператора может быть использовано и имя переменной, стоящей слева от оператора, например:

А = А+3

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

Оператор присваивания и оператор сравнения «=» выглядят одинаково, однако не следует их путать, оператор сравнения используется в логических выражениях.

Рассмотрим арифметические операторы, использующиеся для вычислений в VBA.

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

Таблица 6

Оператор Синтаксис Пояснение
+ N1+N2 сложение
- N1-N2 -N вычитание унарный минус, изменяет знак числа
* N1*N2 умножение
/ N1/N2 деление
\ N1\N2 целочисленное деление, при делении отбрасывается дробная часть результата
Mod N1 Mod N2 возвращает остаток от деления
^ N1^N2 возведение в степень

Сложение

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

Тип результата:

Single+Long = Double

Date+[любое] = Date

Если [тип меньшей точности]+[любой] = [большая точность] то результирующий тип будет большей точности, например

W – переменная типа Variant, W = 32700 (тип Integer)

W = W+20000 = 52700 результат превосходит тип Integer.

VBA преобразовывает W в тип Long.

Null+[любое] = Null

Null – особое значение, которое может иметь только переменная типа Variant, оно указывает на то, что в переменной нет правильных данных.

Числовые типы данных в порядке возрастания точности: Byte, Integer, Long, Single, Double, Currency.

Вычитание

Либо операция вычитания, либо унарный минус.

Унарный минус – это тоже самое, что умножение на -1.

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

 

Умножение

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

При умножении все переменные типа Variant, в которых записана величина типа Date, преобразуются в числовой тип.

Деление

Операндами могут быть числа или строки, которые можно преобразовать в числа, при этом Null+[любое] = Null.

/ - деление действительных чисел. Результат деления чаще всего Double.

\ - целочисленное деление, результат всегда целое число. При использовании действительных операндов, VBA сначала округляет их значения, а потом делит, т.е. 19,5\2= 20\2=2. 19,2\5=19\5 = 3. Результат не округляется, а просто отбрасывается дробная часть.

Mod – деление по модулю. Если операндами являются вещественные числа, то перед вычислением они округляются, а результатом является остаток от деления.

При целочисленном делении и делении с возвращением остатка результат всегда имеет тип Integer или Long, в зависимости от того, в пределах какого диапазона находится полученное значение.

Возведение в степень

Отрицательные числа можно возводить только в целую степень. Если один из операндов Null, то результат тоже Null, иначе тип Double.

 

 


 

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.