Vba excel тип object
Visual Basic for Applications может управлять различными типами данных. Как и в большинстве других систем программирования Visual Basic разделяет обрабатываемые данные на числа, текст, даты и другие типы. Ниже будут приведены описания основных типов данных VBA, а также будет показан объем памяти занимаемый каждым типом и диапазоны значений, которые эти типы могут сохранять.
Типы данных для хранения целых чисел
Для хранения целых чисел используется один из трех численных типов данных.
Байт - это единица измерения компьютерной и дисковой памяти, состоящая из восьми битов или двоичных разрядов. Обычно один алфавитный символ требует для хранения одного байта памяти.
Тип данных Byte используется для хранения положительных чисел от 0 до 255 и занимает 1 байт памяти.
Integer
Integer - это целое число, число, не имеющее дробной части. Целые числа не содержат десятичного знака, даже если дробная часть равна нулю.
Тип данных Integer используется для хранения чисел от -32768 до 32767 и требует 2-х байтов памяти.
Long - длинное целое число.
Тип данных Long используется для хранения чисел от -2147483648 до 2147483647 и требует 4-х байтов памяти.
Типы данных для хранения дробных чисел
Для хранения чисел, имеющих дробную часть используются типы данных с плавающей и с фиксированной точкой. Числа с плавающей точкой получили свое название вследствие того, что десятичная точка "плавает" в зависимости от того, насколько большое или маленькое значение сохраняется в памяти. VBA имеет два различных типа данных с плавающей точкой и один с фиксированной.
Single
Числа, сохраняемые с использованием типа Single, называют числами одинарной точности.
Тип данных Single используется для хранения отрицательных чисел от -3,402823*10 38 до -1,401298*10 -45 , положительных чисел от 1,401298*10 -45 до 3,402823*10 38 и требует 4-х байтов памяти.
Double
Числа, сохраняемые с использованием типа Double, называют числами двойной точности.
Currency
Этот тип данных используется для хранения чисел с фиксированной точкой, десятичная точка всегда находится в одном и том же положении, справа от десятичной точки всегда имеется только четыре цифры. Числа типа Currency не имеют ошибок округления, используются при "денежных" вычислениях.
Типы данных для хранения дат, текстовых строк и логических значений
Тип данных Date использует 8 байтов памяти для хранения дат и времени.
String
Любые текстовые данные, содержащие буквы алфавита, цифры, знаки пунктуации и различные символы называются строками. Существуют строки переменной и фиксированной длины.
Тип данных String (переменной длины) используется для хранения текста с количеством символов от 0 до 2 миллиардов и требует памяти в размере 10 байт+один байт на один символ.
Тип данных String (фиксированной длины) используется для хранения текста с количеством от 1 до 654000 символов и требует памяти в размере один байт на один символ.
Boolean
Логические значения True и False называют булевыми значениями. Булевы значения получают как результат операций сравнения.
Тип данных Boolean может иметь одно из двух значений True или False и требует 2-х байтов памяти.
Типы данных Variant и Object
Variant
Тип данных Variant - это особый тип данных, который используется для всех переменных с необъявленным явно типом. Не смотря на то, что типы Variant удобны, они требуют большого объема памяти, а математические операции и операции сравнения над данными этого типа выполняются медленнее.
Тип данных Variant может хранить любой тип данных, за исключением типа Object. Диапазон для данных этого типа зависит от фактически сохраняемых данных и требует памяти в размере 16 байт + 1 байт на символ.
Object
Тип данных Object используется для доступа к любому объекту, распознаваемому VBA. Сохраняет адрес объекта и требует 4-х байтов памяти.
Содержит адреса, которые ссылаются на объекты. В переменную можно назначить любой ссылочный тип (строка, массив, класс или интерфейс) Object . Object Переменная также может ссылаться на данные любого типа значения (числовой. Boolean Char Date Структура или перечисление).
Комментарии
Object Тип данных может указывать на данные любого типа данных, включая любой экземпляр объекта, распознаваемый приложением. Используйте Object , если во время компиляции неизвестно, на какой тип данных может указывать переменная.
Значение по умолчанию Object — Nothing (пустая ссылка).
Типы данных
Переменной можно присвоить переменную, константу или выражение любого типа данных Object . Чтобы определить тип данных Object , на который в настоящее время ссылается переменная, можно использовать GetTypeCode метод System.Type класса. Это показано в следующем примере.
Object Тип данных является ссылочным типом. однако Visual Basic обрабатывает Object переменную как тип значения, если она ссылается на данные типа значения.
Память
Любой тип данных, на который он ссылается, Object переменная не содержит само значение данных, а указатель на это значение. Он всегда использует четыре байта в памяти компьютера, но не включает хранилище для данных, представляющих значение переменной. Из-за кода, использующего указатель для нахождение данных, Object переменные, содержащие типы значений, немного медленнее, чем явно типизированные переменные.
Советы по программированию
Производительность. Переменная, объявляемая с Object типом, достаточно гибка, чтобы содержать ссылку на любой объект. Однако при вызове метода или свойства для такой переменной всегда вызывается позднее связывание (во время выполнения). Чтобы принудительно выполнить раннее связывание (во время компиляции) и повысить производительность, объявите переменную с конкретным именем класса или приведите ее к конкретному типу данных.
При объявлении объектной переменной попробуйте использовать конкретный тип класса, например OperatingSystem , вместо обобщенного Object типа. Также следует использовать наиболее конкретный класс, например TextBox Control , вместо, чтобы получить доступ к его свойствам и методам. Для поиска доступных имен классов обычно можно использовать список классы в обозревателе объектов .
Расширяющие. Все типы данных и все ссылочные типы расширяются до Object типа данных. Это означает, что можно преобразовать любой тип в Object без возникновения System.OverflowException ошибки.
однако при преобразовании между типами значений и Object Visual Basic выполняет операции, называемые упаковкой и распаковкой, что делает выполнение более медленным.
Символы типа. Object не имеет символа типа литерала или символа типа идентификатора.
Пример
В следующем примере показана Object переменная, указывающая на экземпляр объекта.
К этой группе относятся все данные только целого типа. Диапазон зависит от выбранного типа (см. таблицу).
Тип
Диапазон
Описание
Этот тип данных хранит положительные целые числа до 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 байта.
Что такое OLE объект?
Я уже не первый год занимаюсь программированием. Но по большому счёту только сегодня задумался над.
Что такое Commandtype и что он определяет в ADO?
Chto takoe Commandtype i chto on opredeliat v ADO?
что такое ClassBulder
народ, подскажите, что такое Class Builder.. и с чем его едят? (как пользоваться?) инструкцию.
что такое Raz?
Dim Raz As Double Dim i As Integer Dim x As Double Dim y1 As Double Dim y2 As Double Dim S As.
Всё, что видишь в приложении на VB6 есть совокупность объектов. Кнопки, текстовые поля, сама форма и т.д.
У объектов есть свойства, методы и события. Из жизни, к примеру объект
Телефон:
свойство ( характеристики объекта ) - красный, кнопочный
метод (действия или задачи, которые выполняет)- связь с другими телефонами
событие (воздействие на которое реагирует объект) -входящий звонок, поднятие трубки
Всё то же самое и в VB6, да и в любом объектно-ориентированном языке программирования.
Да. Это я понял. Млин, странно, но я вопрос даже не могу сформулировать.В общем, есть объект "CommandButton" - кнопка, у него свойства, действие и т.д.
А вот объект в коде: Для чего он нужен, зачем его объявлять, как он применяется, в каких случаях, когда его нужно применять и т.д. Это не объект. Это ты говоришь операционной системе: "Я собираюсь создать объект, так что давай-ка выдели мне под него место в памяти"
Не знаю .. чейто текст .. ((
я однажды тоже . ехал на чемто .. потом сам проснулся и спрашиваю
где мы едем ? .. на верблюде ! ? )) .. ладно
Мне кажется это я гдето писал ..
fever brain, и что?:D
Ясно. Ну, вот я выделил под него место. А вот как и главное зачем (какая польза?) его использовать. Это не объект. Это ты говоришь операционной системе: "Я собираюсь создать объект, так что давай-ка выдели мне под него место в памяти" Это ссылка. Ты можешь не создавать объект а сослаться на него с помощью ссылки. Это можно так сказать безопасный указатель.Elkatib, про которые ты говоришь объекты - это контролы. Объект - это структура данных, почти тоже самое что пользовательский тип.
Для накачки. Данными.
Вот форум. Используй!
Можно пример с комментариями, пожалуйста. Буду очень благодарен. Форум использовал и не только.Решение
Т.е. Вы хотели спросить для чего используются переменные, которые ссылаются на объект?
Давайте начнем с понятийного аппарата.
Dim x As Object
x - такая же переменная по принципу хранения в памяти как и другие. Просто данное объявление означает, что в дальнейшем мы захотим присвоить ей ссылку на какой-то объект.
При этом в отличие от других типов присвоение производится несколько иначе:
As Object - это общее понятие какого-либо объекта, будь-то форма, контрол, класс и др. специфические.
При этом, контрол - это не конкретный тип, а группа типов объектов, например, кнопки, галочки, сама форма.
Т.е. Вы можете написать:
Указывать вместо конкретного типа (например, CommandButton) группу, к которой относится этот тип объекта (Control) может быть полезно, к примеру, при перечислении всех контролов на форме.
Но редактор будет Вам подсвечивать список доступных свойств и методов только, если указан конкретный тип объекта.
Вот так неправильно (если на форме будут другие контролы кроме кнопки, то тип объекта не совпадет и вылетит ошибка):
А так правильно:
После завершение работы с объектом (экземпляром), если он нам больше не нужен, объект принято уничтожать, правильнее говоря мы уменьшаем кол-во ссылок на данный объект. И если кол-во ссылок на него становится = 0, объект уничтожается, а память, занятая объектом, высвобождается:Теперь на счет примера с As Object.
Выше мы работали с объектами, типы которых уже где-то в нашей программе задекларированы, т.е. ей заранее известно о перечне свойств, методов, событий объекта, тип которого носит имя, к примеру "CommandButton".
Но мы также можем работать и с объектами, для которых наша программа не знает названий их свойств и др .
И в этом случае нам придется использовать именно тип Object.
Допустим, мы хотим создать экземпляр приложения Microsoft Excel.
Используя COM-технологию, это легко сделать с помощью такой конструкции:
Данный прием называется позднее связывание.
Либо мы можем заранее сослаться на библиотеку типов с помощью меню Project -> Preferences, выбрать библиотеку Microsoft Excel.
Код будет таким же, за исключением объявлений:
Данный прием называется ранним связыванием.
У позднего и раннего связывания есть свои плюсы и минусы, но здесь уже не буду об этом. Почитаете самостоятельно.
Есть и множество других, заранее включенных в состав ОС объектов, экземпляр которых можно создать описанным выше способом. Почитать можно здесь: Подскажите литературу для начинающего!
Часто ссылку на объект (Object) еще используют для обращения к подсистеме WMI.
Объекты также могут быть созданы, используя некоторые API-функции (например, см. CoCreateInstance).
Это допустим, различные интерфейсы, к примеру, ITaskbarList, IPersistFile, IPropertyStore . и прочее. Вот пример подобной работы.
Перед созданием своей первой программы в Excel необходимо разобраться в объектную модели приложения. Имея четкое понимания об объектной модели Excel вы сможете управлять практически всеми объектами, создавать/изменять листы, графики, отдельные файлы и многое другое. Возможно на первый взгляд она покажется довольно сложной, но не пугайтесь на конкретных примерах у вас сложится целостная картина.
Структура объектов
Проще всего рассматривать объектную модель как некое дерево или иерархическую структуру, так как каждый объект имеет свое ответвление. Кусочек этой структуры вы можете увидеть на рисунке далее.
Самый главный объект, вершина нашей структуры, это собственно само приложение Excel - объект Application. Какие объекты входят в Excel? правильно книги (файлы Excel), поэтому в объекте Application содержится коллекция из книг - объект Workbooks. Из чего состоят книги - из листов, диаграмм, соответственно внутри объекта Workbooks мы видим объект Worksheets и Charts. Идем дальше, лист в свою очередь состоит из строк, столбцов, ячеек это объекты Rows, Columns, Range.
Это, конечно, как вы понимаете только часть объектной модели Excel, мы перечислили только одни их самых основных объектов. Полное дерево объектов исчисляется сотнями объектов. Возможно она сейчас кажется сложной, не переживайте со временем вы начнете быстро в ней ориентироваться. Главное сейчас - это понять, что есть некие объекты, которые могут состоять из других объектов.
Объекты и коллекции объектов
Многие объекты, которые мы перечислили выше являются коллекциями. Коллекция - это группа однотипных объектов (или классов). Например Workbook s - это коллекция всех открытых в данный момент книг (объектов Workbook). А коллекция Worksheet s состоит из листов книги (объектов Worksheet), и так далее. Как правило все коллекции заканчиваются буквой S.
Давайте посмотрим, как обращаться к конкретным элементам коллекции в коде VBA.
Мы можем указать порядковый номер (начиная с единицы) элемента в коллекции. Worksheets(3) - в этом случае мы обращаемся к 3-му листу книги.
Мы также можем указать название листа в кавычках Worksheets("Название листа").
Аналогичным образом можно обратиться к конкретной книге Workbook("Названием книги").
Чтобы обратиться к объекту Excel (к листу, или ячейке) необходимо указать ссылку на этот объект, перечислив полный путь к нему в соответствии с объектной моделью.
Например, для ячейки A1 полная ссылка будет выглядеть следующим образом:
На самом деле полный путь писать не обязательно. Application - можно практически всегда не указывать. Workbooks("Название книги") - можно не указывать, если необходимо обратиться к ячейке из активной книги, а Worksheets("Название листа") можно не писать в случае если код должен выполнять действия на активном листе. Т.е. в можно упростить до:
Но всегда имейте ввиду, что это будет ячейка на активном листе.
Свойства объектов
Все объекты имеют свойства и методы. Например, объект Range (диапазон ячеек) имеет свойство Value, в котором содержится значение.
Вы можете получать значения из свойств объекта, просто указав путь к нужному свойству. Следующий код выведет значение ячейки A1 на активном листе.
А следующий код присвоит свойству Value новое значение 12345.
Протестируйте эти функции в своем файле.
Кстати, есть свойства объектов, которые доступны только для чтения. Т.е. вы сможете только получить значения этих свойств, но не сможете присвоить им другие значения. Например, свойство Range("A1").Address которое содержит адрес ячейки. При попытке записать новое значение в такое свойство будет возникать ошибка.
Или же свойство Worksheets.Count - вы можете только получить количество листов, но не можете изменить количество листов, задав новое свойство Count. Для этого существуют методы объектов.
Методы объектов
В отличие от свойств, которые просто сохраняют или передают значение, методы выполняют какие-либо действия с объектом. Например метод Worksheets.Add создает новый пустой лист в книге. Еще один пример это метод Clear, который позволяет очистить содержимое ячеек. Следующий код очистит данные и форматы из диапазона ячеек A1:C10.
Есть аналогичная функция, которая не удаляет при этом форматирование ячеек, а только очищает их от значений
Методы могут иметь дополнительные аргументы. Например, метод AddComment имеет обязательный аргумент Text, в котором необходимо передать текст комментария к ячейке.
Также можно использовать следующий код для вызова методов. Возможно это более привычная запись, когда по аналогией с функцией Excel мы в скобках передаем аргументы этой функции.
Приемы и лайфхаки
Автоматическое заполнение кода по начальным символам
Часто, особенно на первых порах, вы не запомните точное название всех объектов, но будете помнить их первые символы. В редакторе кода вы можете использовать отобразить список названий и автоматически записать объект по первым символам. Для этого используйте сочетание клавиш Ctrl+ J и увидите список из предложенных вариантов.
Просмотр свойств и методов у объекта
Когда вы будете писать свои программы, то редактор кода VBE будет подсказывать список свойств и методов у объекта. Чтобы отобразить этот список достаточно ввести объект, например, Worksheets и поставить точку, отобразится список свойств и методов. Выберите нужный с помощью мышки или же используйте стрелки. Вы также можете начать писать название свойства и редактор кода подберет подходящее. Когда выбор сделан - нажимайте клавишу Tab.
Явно указывайте тип переменных
Предыдущий лайфхак не будет работать для созданных локальных переменных до тех пор, пока вы явно не укажите их тип. Например, если вы захотели создать переменную MySheet в которой хотите хранить текущий лист. То список свойств и методов у такой переменной вы не увидите. Но стоит добавить строчку кода и явно указать тип переменной:
И подсказки снова заработают.
Быстрый просмотр справки
Все свойства и методы знать невозможно, так как их тысячи. Первое время вы будете активно пользоваться справкой. Советую использовать официальную справку на сайте Microsoft.
Чтобы быстро посмотреть информацию по интересующему вас объекту, свойству или методу просто поставьте курсор на интересующий элемент кода и нажмите клавишу F1. В окне браузера откроется официальная справка по этому элементу.
Поиск по объектной модели
Также вначале пути у вас постоянно будут возникать вопрос "А как называется свойство, которое отвечает за. ". Иногда мы и не заем есть ли такое свойство/метод вообще. Хороший вариант изучения - просмотр объектной модели. Переходите в редактор кода VBA и нажимайте клавишу F2. Откроется окно с поиском по объектной модели. Тут вы найдете все имеющиеся свойства, методы, события и прочие элементы в модели. Просматривайте их, как правило в названии элемента заложена его суть и вы найдете то что искали. А в процессе поиска будете запоминать и другие элементы, которые будут попадаться на глаза.
Давайте разберем на примере. Допустим нам надо защитить лист, но мы не знаем как точно зазывается свойство или метод.
- Открываем объектную модель клавишей F2.
- Так как мы хотим защитить лист, то логично предположить, что это метод в объекте Worksheet. Введем его в строку поиска и нажмем бинокль.
- В результатах поиска выбираем наш объект Worksheet и просматриваем его элементы.
- Находим метод Protect (Защита).
- Мы также можем просмотреть описание всех аргументов этого метода
- Конечно если что-то не понятно, то жмем клавишу F1 и открываем справку по этому методу с подробным описанием каждого аргумента.
На этом данную статью завершим, а в следующих мы более подробно поговорим про самый распространенный объект Excel - объект Range.
Читайте также: