Студопедия


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

End Sub. Если инструкция Dim для переменной отсутствует, ей присваивается тип по умолчанию, в данном случае — Variant




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

«Плюсы» и «минусы» типа Variant

Когда значение присваивается переменной типа Variant, VBA определяет его тип и ответствующим образом изменяет переменную. Тип Variant по умолчанию присваивается всем переменным, которые не описаны инструкцией Dim. Если Вы хотите для неописанных переменных задать другой тип, используйте инструкцию DefType о которой мы расскажем немного позже. Применение типа данных по умолчанию для всех переменных, конечно, сокращает код. Некоторые разработчики весьма высоко оценили этот способ, позволяющий использовать новые переменные в любом месте программы, не заботясь об их описании.

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

Во-первых, на значения типа Variant расходуется больше памяти. Одна такая переменная занимает 16 байт (плюс по 1 байту на символ, если в ней содержится строка), а это почти в два раза больше, чем для других «объемных» типов — Currency, Date и Double. Коротким программам требуется, как правило, незначительный объем памяти, но в больших приложениях со множеством переменных Вы, безусловно, столкнетесь с проблемой производительности, а может быть и исчер­паете всю доступную память системы.

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

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

Рассмотрим в качестве примера код для математических вычислений с переменной. Допустим, что при вызове подпрограммы в нее передается переменная Integer. В этом случае Вам не надо проверять, будет ли для расчетов действительно использовано численное значение. Если же Вы передаете в подпрограмму переменную Variant, Вам придется проверять это каждый раз. Не исключено, что по ошибке в подпрограмму будет передана дата, строка или даже ссылка на объект, выяснение займет еще некоторое время и приведет к дальнейшему снижению производительности.

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





Дата добавления: 2014-02-09; просмотров: 457; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


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

Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 9851 - | 7418 - или читать все...

Читайте также:

 

34.237.76.91 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.005 сек.