Объектные переменные.Объектные переменные –это переменные, используемые для ссылки на объект. Описание и присвоение объектной переменной немного отличается от того, как это делается для других переменных... Например: Dim Range1 As Object Set Range1 = Worksheets(1). Range(“A1”) Во второй строке при задании значения используется ключевое слово Set Как работать с переменными типа Object? Рассмотрим процедуру: В процедуре демонстрируется использование объекта типа Range для установки значения диапазона A1 первого рабочего листа. '=================================================== Sub Lect11Proc01_UseObjectVariable() Dim Num2 As Long Num2 = 100000 Dim Range1 As Object Set Range1 = Worksheets(1).Range("A1") Range1.Value = Num2 MsgBox Range1.Value End Sub
Использование объектных переменных конкретного типа. При описании переменной можно использовать точное название типа Object. Например: Dim Workbook1 As Workbook Dim Worksheet1 As Worksheet Din XL As Application Dim Range1 As Range Возникает естественный вопрос, как можно узнать имя типа объекта, используемого при описании переменной. Это просто имена в иерархической модели Excel. Можно все эти переменные описать с помощью общего типа Object. Dim Workbook1 As Object Dim Worksheet1 As Object Din XL As Object Dim Range1 As Object Если при описании можно использовать общий тип Object, зачем себе усложнять жизнь? Ответ прост, программы с использованием объектов конкретного типа выполняются существенно быстрее, это особенно программ циклического характера. Преимущества использования объектных переменных. При использовании объектных переменных сокращается время написания кода, делает программу более читабельной и уменьшает время ее выполнения. Например, приводимая ниже подпрограмма устанавливает свойства Value, RowHeight и ColumnWidth объекта Range, выводит в окне сообщения установленное значение свойства Value и затем вызывает метод ClearContents: Sub Lect11Proc02_RangeObject() Worksheets(1).Range("A1").Value = 25 Worksheets(1).Range("A1").RowHeight = 50 Worksheets(1).Range("A1").ColumnWidth = 50 MsgBox Worksheets(1).Range("A1").Value Worksheets(1).Range("A1").ClearContents End Sub
То же, но короче благодаря использованию переменной типа Range. Sub Lect11Proc03_RangeObjectVariable() Dim Range1 As Range Set Range1 = Worksheets(1).Range("A1") Range1.Value = 25 Range1.RowHeight = 50 Range1.ColumnWidth = 50 MsgBox Range1.Value Range1.ClearContents End Sub
Proc03 выполняется быстрее раза в 3, чем Proc02 и в ней меньше операций «точка» Явное описание переменных. VBA предоставляет возможность явного описания переменных, предохраняющую от случайного пропуска описаний переменных и недостатков, связанных с использованием переменных типа Variant VBA требует, чтобы тип Variant при присваивании значения такой переменной приводился в соответствии с типом присваиваемого значения. А это время, особенно если программа циклическая. Необходимо отслеживать тип данных, которые содержит переменная типа Variant. Переменные типа Variant делают весьма затруднительной отладку, так как неизвестен тип данных, хранящейся в переменной типа Variant. Явно можно описать двумя способами: Поместить в раздел описаний (т.е. в верхнюю часть) каждого модуля VBA оператор Option Explicit (он должен предшествовать всем процедурам и функциям) В редакторе VBE выполнить команду «СервисПараметрыдиалОкно Параметрывкладка Редакторфлажок Явное описание переменных». В этом случае редактор VBE будет вставлять оператор «Option Explicit» в начало каждого нового модуля. Типы данных по умолчанию. В VBA не обязательно всегда использовать по умолчанию тип данных Variant. Чтобы изменить тип данных по умолчанию, нужно поместить оператор описания DefТип в начале модуля VBA. Например, если нужно чтобы все неописанные переменные имели по умолчанию тип Integer, поместите следующий оператор в начале модуля VBA перед первой подпрограммой: DefInt A-Z. Параметр A-Z. Означает, что все переменные, начинающиеся с A-Z. Будут иметь по умолчанию тип Integer Еще примеры: DefInt I DefStr S DefCur C Замечания: При отсутствии операторов DefТип в начале модуля VBA, все неописанные переменные считается по умолчанию типа Variant. Можно помещать несколько операторов VBA в одной строке, отделяя их, друг от друга двоеточием: DefInt I: DefStr S: DefCur C
|
| Оглавление| |