Vba excel option explicit что это
Совет 397. Как использовать свойство Filter при работе с ADO
При работе с наборами данных ADO вы можете использовать свойство Filter, напримерследующим образом:
В этом случае будут выбраны все записи со значением 000132 в поле pub_id. Здесь важно помнить, что ADO физически не исключает из набора записи, которые не отвечают данному критерию, — просто они становятся недоступными для работы. Это, в частности, означает, что если вам нужно применить новый фильтр для работы с исходным набором, то нет необходимости производить отмену применения предыдущего фильтра — в любом случае ADO автоматически выполняет фильтрацию «исходного» набора данных.
Если же вы хотите вернуть набор данных в «неотфильтрованное» состояние, то нужно выполнить выборку с «пустым» фильтром:
Совет 398. В который раз повторяем: используйте режим Option Explicit
Мы уже неоднократно говорили о необходимости использовать режим обязательного объявления переменных, но приходится опять это повторять.
Читатель Вячеслав прислал письмо с вопросом, почему у него не работает вставка таблицы из VB-проекта в Word, точнее — почему не работает конструкция:
Напомним, что оператор Option Explicit будет автоматически вставляться в код нового программного модуля, если установить флажок Require Variable Declaration в окне Tools|Options|Editor (VB и VBA).
Совет 399. Задавайте вопросы в понятной форме
Именно с этого совета начиналась первая статья из серии «Размышления бывшего программиста» (КомпьютерПресс № 9’2000), но опять же приходится возвращаться к этой теме. Почему вопрос читателя, рассмотренный в предыдущем совете, решался больше недели? А потому, что его первое письмо содержало такой текст:
«Я не знаю, как средствами не VBA, а VB6 создать таблицу в MS Word. Мне казалось, что все просто: скопировать содержимое макроса в процедуру. Однако VB6 ругается на именованный параметр Range. Подскажите, как мне быть?»
Итак, как нужно задать технический вопрос, если вы хотите действительно получить на него конкретный ответ:
Совет 400. Используйте режим раннего связывания
Об этой проблеме мы говорили в статье «Особенности технологий раннего и позднего связывания в Visual Basic» (КомпьютерПресс № 9’2000). Оба режима имеют свои достоинства и недостатки, но общая рекомендация такова: если нет особой нужды применять позднее связывание (иногда это просто необходимо), то лучше использовать раннее связывание.
Вот какой код прислал нам Вячеслав:
Здесь используется позднее связывание — конкретизация объекта wpApp происходит только в момент выполнения программы (CreateObject). Но предпочтительнее выглядит вариант с ранним связыванием:
В этом случае мы сразу четко фиксируем тип объекта (нужно также установить ссылку на библиотеку Word 9.0 Object Library). И в такой ситуации можно воспользоваться всеми преимуществами интеллектуальных подсказок при вводе кода.
Совет 401. Управляйте режимами программного контроля ошибок
Традиционный вариант управления программным контролем ошибок выглядит примерно так:
При выходе из процедуры (End Sub или Exit Sub) отмена программной обработки ошибок выполняется автоматически, поэтому многие программисты вообще не ставят оператор On Error GoTo 0. Но тут есть один подводный камень: если вы напишете такой код:
то в вызываемой подпрограмме OtherProcedure (и в других вложенных процедурах) будет продолжать действовать установка On Error GoTo MyError, то есть при появлении там ошибки управление будет передаваться на метку MyError. При этом нужно помнить, что если в процедуре OtherProcedure переопределить обработку ошибок, то при возврате управления в MyProcedure действие On Error GoTo MyError будет восстановлено автоматически.
Обычно мы применяем на практике децентрализованную обработку ошибок, когда в каждой «критической» подпрограмме реализуется свой локальный механизм обработки. Однако порой бывает полезным применять централизованную обработку, например в одном месте для всего приложения. Это легко сделать, имея в виду приведенный выше код:
В какой бы из вложенных процедур ни произошла ошибка, управление будет передаваться в конструкцию GlobalError. Но в этом случае возникает другая проблема: как определить, где конкретно произошла ошибка и откуда передано управление? Это можно легко решить, создав глобальную переменную:
И еще одна рекомендация: при прочих равных условиях предпочтительнее выглядит включение обработки ошибок с автоматической передачей управления на следующий оператор. Тогда вы сами можете проверять наличие ошибок в критических точках программы:
Совет 402. Быстрый поиск по списку
При выборе позиции списка может пригодиться вариант ввода с клавиатуры первых символов искомой строки. Это можно реализовать с помощью такого кода:
Здесь реализован вариант, когда на ввод отводится только две секунды. Но можно придумать и другой механизм инициализации строки поиска.
Совет 403. При программном создании наборов данных указывайте размеры полей
Если вы попробуете выполнить такой код при программном создании набора данных ADO
Пользователи Microsoft Access знают, что такое отключение в данном приложении можно выполнить следующим образом:
вызовет появление вопроса о сохранении документа. При выполнении следующего кода:
сразу же появится окно SaveAs без промежуточного вопроса.
Совет 405. Как выводить на экран формы в динамическом режиме
Допустим, вы желаете выводить на экран те или иные формы, имена которых записаны в каком-то списке. Для этого можно воспользоваться коллекцией Forms, выбор из которой нужной формы выполняется с помощью индекса или имени:
Соответственно вывод нужной формы по имени из списка может выглядеть следующим образом:
Совет 406. Как узнать параметры диска
Вы хотите узнать серийный номер жесткого диска, а заодно и имя тома логического диска? Это можно сделать с помощью такого кода:
Совет 407. Как создать дубликатный набор данных
Следует иметь в виду, что метод Clone не создает дубликат набора данных — он просто делает два разных указателя, которые работают с одним и тем же физическим набором. А выполнить формирование копии можно с помощью объекта Stream из состава ADO 2.5 (или более поздней версии):
Совет 408. Как узнать размер свободного места на диске
Вот как будет выглядеть нужный нам код:
Совет 409. Блокировка Windows 2000
Осуществление блокировки Windows NT оказалось делом непростым. Но Windows 2000 включает в себя специальную функцию для выполнения такой операции:
Поскольку у этой функции нет параметров, то к ней можно обратиться напрямую следующим образом:
Такую конструкцию можно применять и в 16-разрядных приложениях. А вот как будет выглядеть операция на VBScript:
1999 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2000 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2001 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2002 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Option Explicit - начинающие программировать в Visual Basic могут увидеть данную строку в чужом коде, либо случайно в своем. Хотя кто-то может быть уже знает, что это и зачем и использует данное объявление намеренно. Я же постараюсь максимально подробно описать смысл этой строки и её полезность для кода в первую очередь для тех, кто еще не знает для чего она.
Строка данная записывается в самом начале модуля, самой первой строкой. Перед этой строкой ничего более не может быть записано, кроме, разве что других подобных строк(есть еще другие :-))
так же редактор VBA выделит ту переменную, которая не объявлена. Первое время это может раздражать. Да и вообще: зачем это? Вы и без всех этих объявлений неплохо жили. А вот зачем
- во-первых: объявление переменных считается хорошим тоном при программировании
- во-вторых: правильное присвоение типов недурно экономит память
- ну и в-третьих(я бы даже сказал в главных): это помогает избежать неявных ошибок кода при несовпадении типов данных
А теперь перейдем к сути и попробуем разобраться в чем же польза от использования Option Explicit . Ниже приведен простой код:
Выполните данный код без строки Option Explicit . Какое значение выдаст MsgBox? Ничего. Что за странность? Ведь явно видно, что переменной присвоено значение текста. Ничего больше не происходит. Но переменная все равно пуста. Мистика. А теперь запишите первой строкой в модуле Option Explicit :
Еще один классический пример, когда Option Explicit спасет от лишних мозговых штурмов. Имеем простую функцию пользователя(UDF), которая берет указанную дату и возвращает её в заранее заданном формате в текстовом виде:
Function GetDateAsText(Optional ByVal Дата As Date) If Дата = 0 Then Дата = Date End If GetDataAsText = Format(Дата, "DD MMMM YYYY") End Function
Хоть функция и короткая, но даже в ней не сразу порой бросается в глаза опечатка(представим, если функция в реальности строк на 200). В итоге чаще всего автор функции не понимает, почему при записи её на листе она возвращает не дату вида " 21 мая 2016 ", а 0 и начинает пошагово выполнять функцию, искать ошибки в логике кода и т.д. Но если поставить в начало модуля Option Explicit , то при первом же выполнении этой функции VBA подсветит нам " GetDataAsText = ", указывая тем самым, что GetDataAsText в чем-то отличается от заданного имени функции - GetDateAsText . Банальная опечатка: GetDat a AsText - GetDat e AsText .
Так же эта строка поможет избежать неявных ошибок и в других ситуациях. В частности, при обращении к другим приложениями(Word, Outlook и т.д.). Например, в Excel применяются именованные константы для многих задач. Одна из распространенных - поиск последней ячейки в столбце: llast = Cells(Rows.Count, 1).End(xlUp).Row
здесь xlUp является именованной константой, значение которой равно числу: -4162 . В других приложениях такой же подход. Это избавляет от необходимости помнить на память все значения констант и обращаться к ним при помощи intellisense. Но действуют эти константы исключительно внутри своего приложения(можете обратить внимание, у Excel константы начинаются с xl , а у Word - с wd ). И т.к. объявлены эти константы в других приложениях - Excel про них не знает(как и другие приложения не знают про константы Excel). Для примера возьмем простой и рабочий код замены в Word:
Dim wdDoc As Object Set wdDoc = objWordApp.ActiveDocument With wdDoc.Range.Find .Text = "привет" .Replacement.Text = "привет" .wrap = wdFindContinue .Execute Replace:=wdReplaceAll End With
Где wdFindContinue для Word-а равно 1, а wdReplaceAll = 2. Но это происходит только при выполнении изнутри самого Word-а(или при раннем связывании через Tools -References. Подробнее про это можно почитать в статье: Как из Excel обратиться к другому приложению).
Если же скопировать и выполнять данный код из Excel, то работать он будет не так как задумали. Дело в том, что Вы считаете, что Excel работает с обозначенными константами( wdFindContinue , wdReplaceAll ) наравне с Word-ом. Но Excel на самом деле про них ничего не знает. И если директива Option Explicit будет отключена, то Excel просто назначает им значение по умолчанию - Empty. Которое преобразуется в 0. А это совсем иной поиск получается, т.к. должны быть значения 1 и 2. А если бы Option Explicit была включена, то Excel выделил бы их и указал, что они не объявлены. И тогда можно было бы сделать либо так:
Dim wdDoc As Object Const wdFindContinue As Long = 1 Const wdReplaceAll As Long = 2 Set wdDoc = objWordApp.ActiveDocument With wdDoc.Range.Find .Text = "привет" .Replacement.Text = "привет" .wrap = wdFindContinue .Execute Replace:=wdReplaceAll End With
либо так(что удобнее, на мой взгляд):
Dim wdDoc As Object Set wdDoc = objWordApp.ActiveDocument With wdDoc.Range.Find .Text = "привет" .Replacement.Text = "привет" .wrap = 1 .Execute Replace:=2 End With
Так что думаю, не стоит недооценивать значимость строки Option Explicit при написании кодов. В довершение хотелось бы Вас обрадовать, что вписывание данной строки в начало каждого модуля можно сделать автоматическим: поставить в опциях редактора галочку: Tools-Options-вкладка Editor-Require Variable Declaration. Теперь во всех новых созданных модулях строка Option Explicit будет создаваться самим редактором VBA автоматически. К сожалению, в уже имеющихся модулях Вам придется проставить данную строку самим вручную. Но это того стоит, поверьте.
Опция Explicit в VBA используется, чтобы сделать определение переменных обязательным при написании кодов. Возможно, что разработчик может неправильно написать переменную или забыть определить переменную в своем коде. Код не покажет ошибку, и он запустится, но мы получим результат. Если у нас есть несколько кодов, таких как тысячи строк кода, и у нас очень мало переменных, которые остаются неопределенными или с ошибками, то будет очень утомительно проверять каждую строку кода снова и снова. Чтобы не сталкиваться с такой ситуацией, VBA предоставила решение под названием Option Explicit Statement. Этот оператор присутствует в верхней части кода, поэтому он обязывает любого пользователя определять переменную. Кроме того, еще одной важной особенностью этого утверждения является то, что оно выделяет переменную, которая не определена.
Методы использования Option Explicit в VBA
Теперь есть два способа использовать эту функцию в VBA.
Способ № 1
Первый метод заключается в том, что мы можем просто написать опцию оператора в верхней части нашей подпроцедуры и перейти к остальной части нашего кода, как показано на рисунке ниже.
Мы можем видеть синее утверждение, написанное как Option Explicit выше. Теперь, если мы запустим код, мы получим ошибку следующим образом.
Способ № 2
Теперь это не означает, что мы должны писать оператор Option Explicit на каждой странице нашего кода. Мы можем установить некоторые инструкции для VBA, которые будут автоматически вставлять это утверждение во все наши модули. Следуйте инструкциям ниже:
Шаг 1: В заголовках редактора VB щелкните вкладку « Инструменты», в показанных параметрах нажмите « Параметры», как показано ниже.
Шаг 2: После нажатия на Опции откроется окно мастера, как показано ниже.
Шаг 3: выберите опцию « Требовать декларацию переменной » и нажмите «ОК».
Перезапустите модуль, чтобы увидеть изменения в VB Editor. Теперь в любом модуле опция Option Explicit будет доступна в VB Editor.
Как использовать явный оператор Excel VBA Option?
Мы узнаем, как использовать оператор VBA Option Explicit с несколькими примерами в Excel.
Вы можете скачать этот явный шаблон Excel для опции VBA здесь - VBA вариант явного шаблона для Excel
Теперь давайте сначала воспользуемся этим явным оператором опции VBA в базовом макросе из командной кнопки. Выполните следующие шаги, чтобы использовать VBA Option Explicit Statement:
Шаг 1. Перейдите на вкладку « Разработчик », найдите раздел «Элементы управления» и нажмите « Вставить», как показано ниже.
Шаг 2: Вставьте новую командную кнопку из элементов управления Active X, как показано ниже.
Шаг 3: Нарисуйте командную кнопку поверх листа в любом месте, как показано ниже.
Шаг 4: Теперь дважды щелкните командную кнопку, которая откроет окно кода VB Editor для кнопки следующим образом:
Код:
Шаг 5: Теперь давайте поместим в него пример кода, как показано ниже.
Код:
Шаг 6: Теперь на вкладке разработчика нажмите в режиме разработки, что позволит нажать кнопку.
Шаг 7: Теперь запустите приведенный выше код, нажав на кнопку команды на рабочем листе, и увидите результат следующим образом.
Шаг 8: Теперь давайте используем оператор Option Explicit перед нашей подпроцедурой, как показано ниже.
Код:
Шаг 9: Теперь снова нажмите командную кнопку, и мы увидим ошибку компиляции следующим образом.
Он также выделяет переменную, которая не была определена.
Явная опция VBA в Excel - Пример №2
Теперь вместо того, чтобы писать это утверждение перед каждым кодом, давайте проинструктируем Excel сделать обязательным определение переменных из метода, описанного выше. Выполните следующие шаги, чтобы использовать VBA Option Explicit.
Шаг 1. Вставьте новый модуль на вкладке «Вставка», как показано ниже.
Мы видим наш модуль на вкладке проекта VBA, как показано ниже.
Шаг 2: Теперь напишите следующий код в только что вставленный модуль.
Код:
Мы можем видеть, что мы правильно написали наш код и определили переменную, используя Dim Statement, так что технически у нас должно быть значение A1 на листе 10.
Шаг 3: Запустите код, нажав клавишу F5, и посмотрите результат.
В ячейке A1 нет значения, и наш код тоже не выдал ошибку. Эти вещи очень легко пропустить. Если мы посмотрим внимательнее на наш код, то увидим, что я неправильно написал свою переменную в коде.
Шаг 4: Теперь давайте включим опцию требовать определения переменных из раздела инструментов.
Код:
Шаг 5: Запустите код, нажав клавишу F5, и посмотрите результат.
Теперь Excel показывает нам ошибку, что переменная mVar не определена.
Шаг 6: Теперь исправьте ошибку.
Код:
Шаг 7: Запустите код, нажав клавишу F5 или нажав кнопку «Выполнить», и просмотрите результат в ячейке A1 листа 1 следующим образом.
То, что нужно запомнить
- Опция Explicit Statement делает VBA обязательной для проверки, определил ли пользователь каждую переменную или нет.
- Он возвращает ошибку компиляции всякий раз, когда найдена неопределенная переменная.
- VBA Option Explicit также выделяет неопределенную переменную.
- Настоятельно рекомендуется использовать выражение Option Explicit в каждом из наших проектов VBA.
Рекомендуемые статьи
Это руководство к VBA Option Explicit. Здесь мы обсудили, как использовать Option Explicit Statement в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Все, пора поговорить о переменных. Перегружать информацией я тебя не буду, но минимум знать надо.
Очень желательно, чтобы программа начиналась с инструкции Option Explicit в секции General. Эта инструкция заставляет программиста явно объявлять переменные. При ее отсутствии всякое слово, не противоречащее синтаксису VB, может быть переменной.
Что происходит, если мы не используем инструкцию Option Explicit? А то, что мы вообще можем не объявлять переменные. Это ведь здорово! А вот и нет! А почему нет, видно из следующего:
При отсутствии Option Explicit, если нам нужна новая переменная, мы просто вводим ее в код программы, например,
и опс, Visual Basic уже подсуетился и зарезервировал для переменной памяти, причем зарезервировал по полной программе - максимально. Дело в том, что если явно не задавать тип переменнной, VB считает переменную типом Variant, так как такая переменная может содержать почти любые данные: и целые, и дробные, и строковые. Зато и памяти эта переменная использует очень много. Если же мы явно объявим переменную и зададим ее тип сообразно с нашими потребностями, то рациональное использование памяти - на лицо.
Если тебя это соображение не убедило, то представим ситуацию, когда ты повторно используешь свою переменную для, например, изменения ее значения. И при этом делаешь опечатку (а опечаток делается очень много), пропускаешь букву h:
Для Visual Basic в этом никакой ошибки нет. Он при компиляции быстренько резервирует память под новую переменную NewCislo, считая ее типом Variant и у него никаких проблем. Проблемы у тебя. И критичные. Во-первых, ты имеешь ненужную переменную NewCislo со значением 1, о которой ты знать не знаешь. Во-вторых, если ты ожидаешь, что значение твоей начальной переменной NewChislo увеличилось на 1 и стало 8, то это совершенно напрасно. А вот ожидать, что результат выполнения твоей программы даст непредсказуемый результат можно смело.
Иное дело, если ты использовал инструкцию Option Explicit. В этом случае, при запуске программы, Visual Basic тут же найдет новую необъявленную переменную и остановит выполнение программы на строке с ошибкой.
Если я тебя убедил, тогда, чтобы не писать инструкцию Option Explicit в каждом новом проекте, нажми кнопку “Инструменты” (Tools), выбери “Опции” и в окрывшемся окне на вкладке “Редактор” поставь галочку напротив надписи “Требовать определение переменной”, потом OK. Теперь, всякий раз при создании нового проекта (но только нового, в старые эту инструкцию надо прописывать в (General) вручную.), VB сам, автоматически, будет прописывать Option Explicit .
Любое слово, кроме зарезервированных VB, можно сделать именем переменной. Но начинаться имя должно с буквенного символа. Например Peremenaia, Ima1, X, LastNumber, z001. Не надо использовать в именах математические операторы. И нельзя объявлять две переменные с одинаковыми именами. В принципе, для удобства чтения кода и солидности существуют определенные рекомендованные правила (что-то вроде стандартов) написания имен переменных. Но, так как использование этих правил - сугубо личное дело каждого, я их придерживаться не буду. Если охота, поищи в Интернете что-нибудь про Венгерское соглашение, Венгерскую нотацию или соглашение Реддика.
Итак, при явном объвлении переменной очень желательно явно задавать ее тип. В крайне редких случаях, когда тип хранимых данных в переменной заранее неизвестен, используется как раз тип Variant. В Visual Basic наиболее часто используются следующие типы данных (а соответственно переменных):
Long ‘длинное целое число со знаком от –2 147 483 648 до 2 147 483 647
Integer ‘целое число со знаком от –32 768 до 32767
String ‘строка символов
Boolean ‘логическое, принимает два значения или “True” (Истина) или “False” (Ложь)
Пока что нам этого хватит. Если интересно, то перечень типов данных, поддерживаемые VB, можно посмотреть здесь.
Теперь, где и как их объявлять. Если ты объявишь переменную в теле процедуры объекта, например кнопки, то доступна она будет только в этой процедуре. В другой, скажем, кнопке, ее использовать нельзя. Чтобы переменную использовать во всей форме, надо объявить ее в разделе деклараций (это в самом верху кода – (General) – (Declarations). Для этих случаев можно использовать инструкцию Dim. Ну, а чтоб она была доступна во всей программе (в разных, например, формах) она должна быть объявлена в стандартном модуле с ключевым словом Public. Но модулей мы пока не создавали и оставим это до поры в стороне. Ну вот, на первое время этого о переменных хватит. Чтобы было совсем понятно, вот пример объявления переменных:
Option Explicit
Dim MyStream As String
Dim K14 As Long
Dim Flag As Boolean
Dim Numder As Integer
Private Sub Form_Load()
Dim Flag2 As Boolean
Dim m99little As String
End Sub
Теперь разберем использование нового объекта - Timer (таймера). Слева, где компоненты формы, они же инструменты-элементы, нарисован такой будильничек. Это таймер и есть. Он всегда невидимый, но нужный элемент. Всего их одновременно можно использовать около 30 штук. Но нам такое количество таймеров не надо.
Создадим новый exe-проект и поместим один таймер на форму. На основе его мы сделаем сейчас маленькие часики. В свойствах этого таймера поставьте следующие установки:
Enabled – False (по умолчанию True) означает, что таймер выключен
Interval – 1000 (время, в миллисекундах, через которое таймер срабатывает, если конечно включен). Таймер будет срабатывать каждые 1000 мск, т.е. каждую секунду, как в нормальных часах.
Кроме того, нам понадобятся три лейбла: Label1 для секунд, Label2 для минут и Label3 – сами догадайтесь для чего. Правильно, для часов. Все.
Изменим свойства лейблов следующим образом:
Alignment – 2-Центровка (Это чтоб цифры были по центру лейблов)
BorderStyle – 1-Фиксировано (это чтоб размер формы нельзя было изменить)
Caption – 00 (на всякий случай, т.е. значение лейблов изначально будет “00”)
Нажми Font и выбери размер шрифта 14, а начертание – полужирное. После этого подбери подходящий размер окон Лейблов, чтобы цифры в них выглядели симпатично.
Должно получиться как на рис.8.
Создадим процедуру Form_Load .
Option Explicit
Private Sub Form1_Load()
З атем в теле процедуры, как у всякой приличной программы, меняем заголовок формы.
Form1.Caption = "Часики"
Дальше, для того, чтобы наши часы сразу показывали текущее время, надо его взять из компьютера. Чтобы получить системное время, есть функция Time (Label1.Caption=Time). Но она дает полное время одной строкой (16:23:42). Нам тогда придется выбирать из нее секунды, минуты и часы, чтобы распихать по свои лейблам. А чтобы этого не делать, можно взять готовые функции, которые предоставят нам это все по частям:
Label1.Caption = Second(Time) 'стало быть секунды
Label2.Caption = Minute(Time) 'ну, минуты
Label3.Caption = Hour(Time) ' и часы
Теперь, при запуске того, что мы наваяли, у нас будет показываться текущее время. Это, конечно, прогресс, но вот только часики-то стоят. Трясти монитор не стоит, они от этого не пойдут, а вот запустить таймер одной простой строчкой мы сможем:
Timer1.Enabled = True
Вот она, булева алгебра (ну еще не алгебра, но уже кое-что). То есть Timer1.Enabled может быть либо включен ( True ) , либо выключен ( False ). На этом п роцедура Form1_Load() закончена:
Чтобы получить хоть какие-нибудь блага от запущенного таймера и заставить наши часики ходить, создадим процедуру, которая будет исполняться при наступлении события срабатывания таймера. Событие это у таймера единственное и называется тоже .Timer. Возникает оно в тот момент, когда таймер досчитывает до предела, установленного в свойстве Interval и соответственно сбрасывается на ноль.
Private Sub Timer1_Timer()
Наши секунды должны увеличиваться на одну за каждое срабатывание таймера. Поэтому пишем счетчик, который будет увеличивать значение наших секунд на единицу при каждом срабатывании таймера:
Label1.Caption = Label1.Caption + 1
И вот мы вплотную подошли к проблеме условного оператора (а лучше инструкции) If, без которого - никуда. Суть этой инструкции в том, что он позволяет при неком создавшемся условии производить изменения в ходе программы в зависимости от этого условия.
Этоу инструкцию можно использовать в блоковой форме: полном (развернутом) виде и неполном (без строк ElseIf), а также в одну строку.
В полном виде в блоковой форме синтаксис этой инструкции будет выглядеть следующим образом:
If Условие1 Then
группа операторов1
ElseIf Условие2 Then
группа операторов2
.
ElseIf УсловиеN Then
группа операторовN
Else
Последняя группа операторов
End If
Условие представляет из себя оператор, значение которого может принимать True (Истина) или False (Ложь). Например, если Условие1 представляет из себя выражение X>1, то оно истинно, если X равно 2, то оно ложно при значении X равном 1. Если Условие1 истинно, то выполняется группа операторов1, остальные группы операторов не выполняются, если даже в каких-нибудь последующих ветках УсловиеN истинно. Если Условие1 ложно, то группа операторов1 не выполняется, а производится проверка Условие2 в следующей ветке ElseIf . И опять же, если Условие2 истинно, то выполняется группа операторов2, последующие группы операторов не выполняются и их условия не проверяются. В противном случае происходит переход к следующей ветке ElseIf . Если ни в одной ветке нет истинных операторов, выполняется последняя группа операторов вне зависимости от каких-либо условий. Логическая схема инструкции If представлена в таблице:
Читайте также: