Remkomplekty.ru

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Int vba excel

Типы данных VBA

Типы данных — это определенные виды данных, которые VBA сохраняет и может манипулировать.

Тип Date

VBA использует тип Date для хранения дат и времени.

При работе с этим типом данных следует иметь ввиду, что VBA-типы Date не являются такими же типами, как в рабочих листах Excel, хотя во многом и схожи с ними. Например, базовой датой для VBA-типа Date является 30 декабря 1899 года, а в Excel — 1 января 1900 года.

VBA-тип Date является типом последовательных дат. VBA использует отрицательные числа для представления дат ранее базовой даты (30 декабря 1899), и положительные — для дат после базовой. Число 0 представляет саму дату 30.12.1899.

В значении последовательной даты целая часть — это общее число дней от базовой даты. Дробная часть (цифра справа от десятичного знака) — эти цифры обозначают время дня как часть дня. Один час — это 1/24 дня, одна минута — 1/1440 дня, секунда — 1/86400 дня.

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

Числа

VBA имеет шесть различных численных типов данных: Byte, Integer, Long, Single, Double, Currency.

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

Целые числа

Integer — это целое число без дробной части (целые числа никогда не содержат десятичного знака, даже если десятичная часть равна нулю).

VBA предоставляет три типа целых данных: Byte, Integer, Long.

Byte — наименьший из трех типов целых данных, предназначен для хранения числе от 0 до 255. Этот тип обычно используют для хранения двоичных данных.

Integer использует диапазон целых чисел от -32768 до 32767.

Long использует диапазон целых чисел от -2147483648 до 2147483647.

Byte, Integer, Long типы требуют меньше памяти для хранения чисел, чем другие численные типы данных VBA, а математические операции и операции сравнения над числами указанных типов быстрее, чем эти же операции для численных типов данных с плавающей точкой.

VBA автоматически преобразует данные типов Byte, Integer, Long в текст, когда они выводятся на экран, используя такие процедуры, как MsgBox.

Числа с плавающей точкой

Числа с плавающей точкой могут иметь любое число цифр до или после десятичной точки (в пределах границ конкретного типа данных). Иногда их называют действительными числами. Этот тип данных используют тогда, когда требуется хранить числа, имеющие дробную часть.

VBA имеет два типа данных с плавающей точкой: Single, Double.

Single используется для хранения:
отрицательных чисел от -3,402823*10 38 до -1,401298*10 -45
и положительных от 1,401298*10 -45 до 3,402823*10 38 .
Числа, хранимые с использованием типа Single, называются числами одинарной точности.

Double используется для хранения:
отрицательных чисел от -1,79769313486232*10 308 до -4,94065645841247*10 -324
и положительных от 4,94065645841247*10 -324 до 1,79769313486232*10 308 .
Числа, хранимые с использованием типа Double, называются числами двойной точности.

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

В экспоненциальном представлении значения записываются без начальных и конечных нулей, и слева от десятичного знака имеется только одна цифра. Число умножается на 10 в некоторой степени, чтобы показать, где на самом деле находится десятичный знак. Следует помнить, что отрицательная степень приводит в результате к меньшему числу, а положительная — к большему. Вместо надстрочного символа показателя степени используется буква Е:
4.1Е3=4100
2.01Е-2=0.0201

Тип данных Currency

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

Currency хранит числа в диапазоне от -922337203685477,5808 до 922337203685477,5807.

Текстовые строки

Любые текстовые данные, сохраняемые в VBA, называются строками. Для их хранения предназначен тип данных String.

Строка может содержать текстовые символы любых типов: буквы, цифры, знаки пунктуации, разделительные символы и пр.

Строки всегда заключаются в двойные кавычки.

Существует две категории строк: строки переменной длины и строки фиксированной длины. По умолчанию в VBA все строки переменной длины.

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

Логические значения

VBA-программа принимает то или иное «решение», основываясь на различных условиях. Любое условие может принимать два значения: True (Истина) или False (Ложь). Логические значения True и False называются булевскими значениями, а тип данных — Boolean.

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

Тип данных Variant

Это особый тип данных, который может сохранять любые типы, за исключением типа Object. VBA использует этот тип данных для всех переменных, если только они не объявлены явно.

Данные типа Variant принимают характеристики определенного типа, который они сохраняют в данный момент. Например, если данные типа Variant содержат строковые данные, Variant принимает характеристики типа String. VBA использует для данных типа Variant наиболее компактное представление, возможное для конкретных значений, находящихся в данных.

Несмотря на то, что типы Variant удобны и избавляют от некоторой части работы при написании кода, они требуют большего объема памяти, чем любой другой тип данных, за исключением больших строк. Кроме того, математические операции и операции сравнения над данными типа Variant выполняются медленнее, чем подобные операции над данными любого другого типа. Следует избегать использования переменных Variant.

Читать еще:  Синяя стрелка в excel

Подведем итог вышесказанному:

Тип данных

Описание и диапазон значения

Округление значений в коде VBA в Excel. Функции int () и fix().

Очень часто при создании алгоритмов подсчета тех или иных значений полученные результаты имеют значение десятичной дроби с большим количеством знаков после запятой. Работать с такими данными и отображать их не очень удобно и некрасиво.
Рассмотрим какими функциями следует округлять данные в коде vba Excel.

Первый способ округления при помощью функции int().

Данная функция выводит целое значение до запятой. При округлении отрицательных чисел int округляет десятичную дробь до большего целого значения.
Например: число Пи с минусом после округления — int (-3.1415926535 ) будет равно 4 (четырем целым).

Второй способ округление при помощи функции fix()

происходит аналогично с int . Отличается эта функция тем, что округляет отрицательные числа до меньшего значения. Так округлённое число Пи со знаком минус будет fix( -3.1415926535) = 3.
Если требуется не просто убрать дробную часть, а округлить до целого числа, можно использовать следующую функцию cint().
Пример:
Cint(fix( -3.1415926535)) = 3
Cint(int( -3.1415926535)) = 3

Как округлять до десятых и сотых (один и два знака после запятой, соответственно).

Для округления до десятых следует умножить переменную на 10 (десять), после чего округлить до целых и разделить на 10 (десять).
Пример:
Cint(int( -3.1415926535*10))/10 = 3.1
Cint(fix( -3.1415926535*10))/10 = 3.1

Для округления до сотых следует проделать ту же самую операцию, только умножать и делить не на 10, а на 100.
Пример:
Cint(int( -3.1415926535*100))/100 = 3.14
Cint(fix( -3.1415926535*100))/100 = 3.14

Пример кода округляющего значения из textbox, запускающийся нажатием кнопки CommandButtom1:

Private sub CommandButtom1_click()
textbox2.value = Cint(int(textbox1.value *100))/100
END SUB

Видео с примером работы макроса:

Как видите, ничего сложного в округлении чисел в vba Excel нет. Удачи Вам в изучении программы

Похожее:

  1. Макрос определяющий пустая ли ячейка или заполненная в VBA ExcelМакрос проверки заполнения ячеек. Периодически при создании.
  2. Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).Использования функции преобразования текста в число в.
  3. Макрос для быстрой замены формул на значения (числа) в выделенных ячейках документа Excel.Когда удобно менять формулы на значения нажатием.

Округление значений в коде VBA в Excel. Функции int () и fix().: 1 комментарий

Cint(int(-3.1415926535*100))/100 = 3.1
А это надёжно? Я вместо сотней поставил 1000 и в одном из случаев произошла ошибка переполнения. Опять поставил сотни.

ШКОЛА ПРОГРАММИРОВАНИЯ

Вы здесь

Сообщение об ошибке

Типы данных в Visual Basic (VBA)

Все типы в VB можно разделить на несколько групп:

  • Целочисленные
  • Вещественные
  • Строковый (текстовый)
  • Логический
  • Дата
  • Неопределенный
  • Объект

Целочисленные типы данных

К этой группе относятся все данные только целого типа. Диапазон зависит от выбранного типа (см. таблицу).

Тип

Диапазон

Описание

Этот тип данных хранит положительные целые числа до 255. Занимает памяти 1 байт (8 бит).

Integer

от -32768 до 32767

Этот тип данных позволяет хранить как отрицательные, так и положительные целые числа. Требует памяти 2 байта (16 бит)

от -2147483648 до 2147483647

Самый длинный целочисленный тип. Хранит как отрицательные, так и положительные целые числа. Памяти требует 4 байта (32 бита)

Вещественные типы данных

К этой группе относятся данные содержащие дробную часть. Так же возможно использование этих типов для хранения целых чисел. Но целыми они будут только внешне, при этом памяти «кушать» больше.

Тип

Диапазон

Описание

Single

от -3,402823*10 38 до
-1,401298*10 -45
и
1,401298*10 -45 до 3,402823*10 38

Числа с одинарной точностью. Требуют памяти 4 байта (32 бита)

Double

От -1,79769313486232*10 308 до -4,94065645841247*10 -324
и
от 4,94065645841247*10 -324 до 1,79769313486232*10 308

Числа с двойной точностью. Требуют памяти 8 байт (64 бита)

Currency

от -922337203685477,5808 до 922337203685477,5807

Числа с фиксированной точностью. После запятой всегда 4 знака. Числа этого типа не имеют ошибок при округлении. Подходит для денежных вычислений. Требует памяти 8 байт (64 бита)

Строковый (текстовый) тип данных

Для описания переменных содержащих символы алфавита, знаки пунктуации, цифры и др. символы, используется тип String. Тип String позволяет хранить строки как фиксированной длины, так и переменной.

String переменной длины позволяет хранить текстовые данные от 0 до 2147483648 символов и требует памяти один байт на один символ т.е. при максимальном размере 2048мб.

String фиксированной длины позволяет хранить до 65536 символов т.е. 64Кб

Логический тип данных

К логическому типу относится тип Boolean. Хранит всего два значения 0 и 1 (TRUE и FALSE). Требует 2 байта памяти. Любые логические операции используют данные этого типа.

Тип данных дата

Тип Date позволяет хранить дату в диапазоне с 1 января 100 года по 31 декабря 9999 и время от 0:00:00 до 23:59:59. Требуется памяти 8 байт.

Неопределенный тип данных

К неопределенному типу относится тип Variant. Variant это тип данных, который используется во всех переменных с необъявленным явно типом. Этот тип данных может хранить любой из вышеперечисленных типов за исключение типа Object. На первый взгляд этот тип может показаться более удобным, однако его рекомендуется использовать только в исключительных ситуациях. Данные этого типа обрабатываются значительно медленнее и занимают в разы больше памяти. Этот типа требует памяти 16 байт, в случае если хранится текст, то к 16 + 1 байт на каждый символ.

Тип данных объект

Тип Object используется для доступа к любому объекту известному в VBA. Переменная этого типа сохраняет адрес объекта. Использует память 4 байта.

Convert String to Integer with VBA CInt

The VBA Tutorials Blog

Introduction — CInt

This VBA tutorial shows you how to convert a data type from a string to an integer with the VBA Type Conversion function CInt. Robust error checks included!

Читать еще:  Vba excel поиск символа в строке

This is Part 1 of a new tutorial series showing you how to convert between VBA data types.
Part 2: Convert number to string
Part 3: Convert string to date

Example — CInt

Convert a String to an Integer

Make powerful macros with our free VBA Developer Kit

This is actually pretty neat. If you have trouble understanding or remembering it, our free VBA Developer Kit can help. It’s loaded with VBA shortcuts to help you make your own macros like this one — we’ll send a copy to your email address below.

Tutorial — CInt

The function ConvertToInteger is the heart and soul of this VBA example. You call the function and pass it a string or other numeric value, like I did in the procedure DemoCInt with the command i = ConvertToInteger(str1) .

In the CInt example, str1 was the value in cell “A1,” but you don’t have to pass the function a value stored in a cell. The statement i = ConvertToInteger(«12345») will work, as well.

If the conversion to an integer succeeds, your string will be changed to an integer and you can use it however you please, including in mathematical expressions.

If the conversion fails, a message box will pop up letting you know it failed and your macro execution will abort.

3 Common Conversion Failures

Why would the conversion fail? There are three common reasons.

The first reason the conversion may fail is that your string is not numeric. For example, the string “test” in the image above cannot be converted to an integer. To be numeric, the string must yield a “True” response in the following code IsNumeric(str1) .

The second common reason for conversion failure is that the numeric value you want to convert is either too large or too small to store as an integer. You see, the integer data type can only store whole numbers between -32,768 and 32,767. Anything outside this range would yield an Overflow error (Run-time error ‘6’). If you want to convert whole numbers outside this range, consider using CLng to convert to a Long data type.

The third common reason that CInt conversions fail is that you are attempting to apply the CInt function to an array. Doing this will cause a Type mismatch error.

Converting Decimals to Integers

Keep in mind that the CInt function rounds decimal numbers. For example, if you are attempting to convert a string or a double data type from “5.5” to an integer, the resulting integer will be reported as a “6.” Likewise, converting a “5.4” will yield an integer of “5.”

Application Ideas — CInt

The ability to convert VBA data types, especially strings to integers, is handy when your program relies on user input. You will be able to check to see if the user entered a string in the correct format, then you can convert the string to an integer and use it in loops, counters, conditional statements and mathematical expressions.

The CInt Function is just one of several VBA data type conversion functions. I plan to highlight more conversions in future lessons. In the meantime, if you’re looking for more string conversion articles, check out my tutorials on

Comments

For more VBA tips, techniques, and tactics, subscribe to our VBA Insiders email series using the form below.

Once you subscribe, please share this article on Twitter and Facebook.

Oh, and if you have a question, post it in our VBA Q&A community.

The best free VBA training on the web
I see people struggling with Excel every day and I want to help. That’s why I’m giving away my 90-days to Master VBA eCourse and my entire personal macro library for free.

Over 2 million people use our VBA tutorials each year to help automate their work. Are you ready to reclaim your time, too? Grab our VBA Cheat Sheets and you’ll be writing macros like a professional. With over 180 tips and 135 macro examples, they include everything you need to know to become a great VBA programmer.

Основы VBA: синтаксис, переменные, типы данных

5.1. Синтаксические описания

Синтаксис языка программирования — это правила написания программ.

Рассмотрим пример — возьмем из справочной системы описание команды. Мы пока не будем вдаваться в смысл ключевых слов (перед нами — описание оператора цикла ), приведенных здесь, остановимся на основных частях описания.

В синтаксических описаниях VBA жирным шрифтом выделены ключевые слова языка, курсивом даны названия переменных и других элементов языка . В квадратных скобках располагаются необязательные элементы – то есть такие элементы, без описания которых можно обойтись. Например, в приведенном описании блоки [statements] будут содержать в себе «полезную нагрузку» цикла – операторы , которые будут выполняться многократно, однако цикл будет работать и без них.

Элементы, которые допускают альтернативный выбор, разделяются знаком » | «. Например, такая запись : » one | two » обозначает » one или two».

Ниже мы будем останавливаться на существенно важных особенностях тех или иных конструкций. Если вам понадобятся подробности — вы сможете найти их в справке к VBA .

Теперь рассмотрим понятие переменной — важнейшее понятие в любом языке программирования.

5.2. Переменные

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

Читать еще:  Currentregion vba excel описание

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

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

  • Имя переменной должно состоять из букв и цифр, причем оно должно начинаться с буквы.
  • Имя не может быть длиннее 255 символов
  • Имя не должно содержать специальных знаков ( # , $ , % и т.д.) и пробелов.
  • В качестве имен нельзя использовать зарезервированные слова VBA (например – if , dim , for и т.д.).

При именовании переменных старайтесь пользоваться латинскими буквами. Иначе возможны проблемы при работе ваших программ на различных версиях Office.

Например, такие имена переменных выглядят вполне корректно: str_Name , num_Age , str_Name1 , num_Item2 и т.д. Обратите внимание на префиксы, которыми мы снабдили имена переменных . Это признак особого стиля именования переменных . Он очень напоминает стиль именования элементов управления, который мы рассматривали выше.

Напишем программу на VBA , иллюстрирующую простой пример работы с переменными . Сначала она должна задать пользователю вопрос: «Как вас зовут», а потом — вывести его имя в окне сообщения.

Для этого добавим в документ Microsoft Word кнопку с именем cmd_Variables и надписью » Имя пользователя «. Зададим ее обработчику Click следующий код (листинг 5.1.):

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

На рис. 5.1. вы можете видеть это окно.

Выражение txt_Name = означает, что мы присваиваем переменной с именем txt_Name то, что пользователь введет в окне ввода данных, как бы говорим программе: «Сохрани в переменной txt_Name то, что пользователь введет в окне». Когда пользователь сообщает свое имя и нажимает OK —введенная им строка записывается в переменную txt_Name . Введем на приглашение программы имя «Александр», вы можете ввести любое другое имя.

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

Обратите внимание на то, что мы не заключили имя переменной в кавычки. Иначе в окне сообщения вывелось бы лишь имя переменной ( txt_Name ), но не хранимый в ней текст.

5.3. Типы данных в VBA

Тип данных определяет важнейшие свойства переменной . А именно, следующее:

  • что может храниться в переменной (текст, число, некоторые другие виды данных);
  • размер памяти, необходимый для хранения переменной (измеряется в байтах);
  • операции, которые можно производить с переменной (например, невозможно извлечь квадратный корень из слова «Привет» так как эта операция не определена для строковых данных);

Вы уже можете предположить как минимум два типа данных , которые могут хранить переменные — строковые и числовые. На самом деле список типов данных VBA гораздо обширнее.

В табл. 5.1. вы найдете информацию об основных типах данных VBA .

Как видите, в VBA существует немало типов данных. Наверное, сейчас вам кажется, что их слишком много. Может показаться, что нет ничего удобнее типа данных Variant . Однако надо учесть, что за универсальность типа Variant приходится платить производительностью и системными ресурсами. Чем больше места требуется для хранения переменной — тем ниже скорость работы с ней.

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

Как правило, для работы с дробными числами и различных вычислений используют тип данных Double . Для переменных , которые используются в циклах, счетчиках — Integer или Long . В работе со строками используют String . Объектные переменные имеют самые разные типы, которые определяются объектами, для обращения к которым они создаются. В небольших проектах вполне оправдано использование переменных типа Variant – это не слишком замедлит работу. Однако, если размер проекта растет или вы нуждаетесь в ускорении ресурсоемких вычислений – подходите к выбору типов данных ответственно.

Если при объявлении переменной не указывать ее тип — он автоматически устанавливается в Variant . Объявляя переменную без указания типа, вы пользуетесь преимуществами работы с объявленными переменными , и, в то же время, можете гибко использовать переменную для хранения различных типов данных (например – чисел с плавающей запятой и целых чисел). Такой подход — объявление переменных без указания типа — допустим при создании небольших проектов, а так же — на начальном этапе работы над достаточно масштабными программами, когда вы не знаете точно, какой тип данных понадобится для той или иной переменной . В листингах, которые вы найдете ниже, мы явно задавали тип переменных лишь тогда, когда это либо требовалось по ходу выполнения примера (например – типы объектных переменных ), либо, когда это нужно для лучшего понимания материала ( числовой тип для возраста, строковой — для имени и т.д.) В основном же мы использовали переменные типа Variant .

Выше мы уже говорили о венгерской нотации как о способе именования объектов. Те же правила действуют и для переменных . Префикс имени обычно говорит о типе переменной . В табл. 5.2. приведены некоторые префиксы.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×