Visual basic основные команды: Краткие описания основных функций и команд VB (для начинающих)
Содержание
Что такое VBA — Основные понятия
ВВЕРХ
❮
❯
В данном разделе мы рассмотрим что такое VBA, посколько именно на нем и пишутся макросы.
Что такое VBA?
VBA — это язык программирования (расшифровывается как Visual Basic for Application), который был разработан компанией Microsoft. Данный язык не является самостоятельным, а предназначен для автоматизации процессов в пакете MS Office. VBA широко используется в Excel, а также в Access, Word и других программах пакета.
VBA — простой язык программирования, которому может научиться любой желающий. Изучив его, вы сможет предоставлять команды Excel, что делать с колонками, строками, значениями в ячейках, перемещать/добавлять/сортировать листы, выводить заранее запрограммированные сообщения, писать свои формулы и функции и т. д. Суть языка заключается в оперировании объектами.
Чтобы работать с VBA кодом, нам нужен редактор, который уже установлен по умолчанию. Вы можете открыть его, нажав комбинацию клавиш «ALT+F11«.
Объекты (Objects)
Давайте разберем, что же такое объект. Объект — это элемент, структурная частица Excel, а именно: книга, лист, диапазон, ячейка. Данные объекты имеют иерархию, т.е. подчиняются друг другу. Схематично структуру иерархии Excel можно изобразить следующим образом:
Главный объект это Application, что соответствует самой программе Excel. Далее следует Workbooks (книга), Worksheets (лист), Range (диапазон, или отдельная ячейка).
Например, чтобы обратиться к ячейке «A1» на листе нам нужно будет прописать следующий путь с учетом иерархии:
Application. Workbooks(«Архив»).Worksheets(«Лист1»).Range(«A1»).
Таким образом, мы научились обращаться до наименьшего объекта в Excel — ячейки.
Коллекции (Collections)
В свою очередь объекты имеют «коллекции». Коллекция — это группа объектов одинакового класса. Отдельные элеметы коллекции являются также объектами. Так, объекты Worksheets являются элементами коллекции объекта Worksheet, который содержит также и другие коллекции и объекты:
- ChartObjects (элемент коллекции объекта ChartObject)
- Range
- PageSetup
- PivotTables (элемент коллекции объекта PivotTable).
Свойства (Properties)
Каждый объект имеет свойства. Например, объект Range имеет свойство Value или Formula.
Worksheets(“Sheet1”).Range(“A1”).Value или Worksheets(“Sheet1”).Range(“A1”).Formula
В данном примере, свойство отображает значение, которое введено в ячейку или введенную формулу.
Также, через свойство Formula можно не только получить формулу, но и записать ее:
MsgBox Range(“A1”).Formula — получим сообщение с формулой в ячейке «А1«;
Range(“B12”).Formula = “=2+6*100”— вписываем формулу =2+6*100 в ячейку B12.
Методи (Methods)
Теперь давайте рассмотрим, каким образом мы можем управлять содержимым диапазона или ячейки. Для этого в VBA существуют, так-называемые методы (команды «что сделать»). При написании кода методы отделяются от объекта точкой, например:
Range(«A1»).Select или Cells(1, 1). Select
Данный метод указывает выбрать (Select) ячейку «A1».
Далее, давайте, удалим значение в данной ячейке. Для этого напишем следующий код:
Selection.ClearContents
Здесь программа «берет» то, что мы выделили (Selection) и удаляет его содержимое (ClearContents ).
Статьи по теме:
SMALL BASIC PRIME – расширенная интегрированная среда разработки (IDE) для Small Basic.
SMALL BASIC PRIME – расширенная интегрированная среда разработки (IDE) для Small Basic.
Интерфейс редактора кода для профессионалов с расширенными возможностями.
Если Вы изучили Microsoft Small Basic, с привычным интерфейсом, самое время изучить SMALL BASIC PRIME – новый интерфейс редактора кода с расширенными возможностями профессионального уровня.
Основные отличия SMALL BASIC PRIME (SB-Prime) от привычной программы Microsoft Small Basic — это наличие функции «Отладка кода» позволяющая пошагово выполнять код, устанавливать точки остановки и видеть, как изменяются переменные и, следовательно, как работает или не работает программа. Кроме функций отладки добавлены также возможности, как визуализация блок-схемы алгоритма, редактор форм с автоматической генерацией кода для нарисованной фигуры и другие полезные функции.
SB-Prime можно загрузить из галереи Technet или с данного сайта по следующей ссылке (SB-Prime.zip, 5,14MB). Существует также небольшой основной пост на форуме для комментариев или предложений. SB-Prime имеет открытый исходный код со всем исходным кодом, доступным на GitHub. На данный момент актуальна версия 1.1.6.0 с единственно возможным англоязычным интерфейсом.
Если вы написали достаточно большую программу на Small Basic, вы наверняка сталкивались с необходимостью отладки. Как правило, стандартные методы отладки Microsoft Small Basic являются следующие:
- Добавление команд TextWindow.WriteLine или какой-либо другой способ увидеть значение переменных в ключевых точках программы.
- Простой вывод значения в строке заголовка GraphicsWindow. Title.
- Установка паузы Program.Delay, чтобы увидеть, что происходит на экране.
- Подача звукового сигнала Sound.PlayClickAndWait как признак того, что некоторая часть кода была выполнена.
Основные вкладки программы
Вкладка Файл (File)
Здесь сгруппированы основные (стандартные) команды работы с файлами: Новый файл, Открыть файл, Закрыть, Сохранить, Сохранить как, Сохранить все, Печать, Выход. Вкладка редко используется, поскольку самые необходимые команды (Новый, Открыть, Сохранить) продублированы на вкладке Домой (Home).
Вкладка Домой (Home)
Эта вкладка содержит стандартные функции, наиболее востребованные при написании кода. По сравнению со стандартными командами Microsoft Small Basic, появились много удобных функций, в том числе «Найти и заменить» (Find and Replace).
Вкладка Отладка (Debug)
Эта вкладка содержит стандартные функции, наиболее востребованные при отладке кода. Более подробно отладка рассмотрена ниже по ссылке.
Вкладка Инструменты (Tools)
Эта вкладка позволяет запускать редактор форм c с автоматической генерацией кода для нарисованной фигуры, визуализировать блок-схему по написанному коду, выбирать код цвета по палитре цветов, выбрать шрифт по начертанию для графического окна, перейти по ссылкам на популярные программы, осуществить поиск расширений и поиск файлов по шаблону в определенной директории.
Вкладка Расширенный (Advanced)
Эта вкладка позволяет запускать менеджер расширений, переводить программу в Visual Basic, настраивать внешний вид рабочего пространства, темы, цвета и другие настройки внешнего вида, запускать утилиту обновления программы.
Как делать Отладку
Введение
Отладка в Small Basic Prime — это процесс анализа программы для обнаружения и исправления ошибок или улучшения функциональности.
Прежде чем запускать отладчик, необходимо предварительно убедится, что программа компилируется и работает без ошибок синтаксиса в исходном коде, так что в первую очередь необходимо исправить синтаксические ошибки.
С помощью программы Small Basic Prime существенно расширяются возможности отладки кода, приближая возможности учебного языка программирования Microsoft Small Basic к профессиональным языкам программирования.
Общие сведения
Отладка запускает программу в обычном режиме, за исключением того, что программа может быть остановлена на определенных строках кода.
Когда программа останавливается, текущая линия выделяется желтым цветом. Кроме того, при остановке значения переменных могут быть проверены или даже изменены.
При остановке программа также может быть расширена по строке, чтобы можно было увидеть, например, какую ветвь оператора If будет выполнена.
При пошаговом выполнении вы можете перешагнуть или выйти из подпрограмм. Таким образом может быть легче добраться до точки в коде, где что-то, кажется, работает не так, как ожидалось.
Еще один способ заставить программу остановиться — это установить точки остановки (breakpoints). Они могут быть установлены на любой строке в коде, и программа будет делать паузу, когда линия выполнения будет достигнута точки остановки.
Наконец, можно остановить программу, когда значение переменной изменяется или превышает, или равно определенному значению. Например, вы хотите, чтобы программа была остановлена, когда оценка игры находится на значении, которое вызывает проблемы.
Таким образом, резюмируя, отладка позволяет отслеживать маршрут прохождения выполнения в программе, проверяя переменные по мере выполнения программы, т.е. гарантируя, что программа ведет себя так, как задумал программист.
Панель инструментов Debug
Основные команды при отладке
Чтобы отладить программу, сначала убедитесь, что она компилируется и выполняется. В этом примере показан образец из файла «PaintProgram.sb», который поставляется со стандартной поставкой Small Basic. Далее выберите панель инструментов Debug.
При выборе панели инструментов Debug также выбирается вкладка Debug в нижней части IDE. Ошибки и предупреждения будут по-прежнему отправляться на вкладку «Output», так что это также может быть проверено в случае возникновения каких-либо ошибок.
Иногда, если программа зависает, возможно, вам придется вручную завершить процесс программы, однако обычно нажатие кнопки «Stop» сбрасывает все, чтобы начать новый запуск отладки.
Некоторые команды имеют горячие клавиши, такие как «F6», чтобы начать отладку или «F9» для переключения точек остановок (breakpoints). Горячие клавиши отображаются в наборе инструментов для кнопок, где они доступны.
Команды запуска (Run)
И команды Пошагового Выполнения (Step)
1. Запуск и пошаговое выполнение программы. Вы можете выполнять отладку только во время ее выполнения. Программа будет работать до тех пор, пока она не будет остановлена.
2. Остановка и закрытие текущей программы, если она запущена или приостановлена.
3. Пауза запущенной программы в ее текущем месте.
4. Шаг до следующей точки остановки, это будет шаг в подпрограмму, если следующая инструкция вызывает подпрограмму. Вы также можете использовать эту кнопку для запуска и паузы при отладке в программе.
5. Шаг до следующей точки остановки, это то же самое, что и шаг в предыдущем случае, если только следующая инструкция не является подпрограммой. В этом случае вся подпрограмма будет запущена и программа остановится, когда подпрограмма завершится.
6. Шаг завершения текущей подпрограммы и остановка при выходе из подпрограммы. Этот метод применяется, когда вы остановились в рамках подпрограммы.
Дополнительные инструменты отладки
Точки остановки (BreakPoints)
На панели вкладки Отладка (Debug) есть три команды, объединенные общим названием Точки остановки (BreakPoints). «Toggle Breakpoints» — данная команда устанавливает точку остановки (Breakpoints) на текущей линии. Программа будет останавливаться при достижении точки остановки (Breakpoints). Точки остановки (Breakpoints) отображаются в виде красных кругов слева от окна кода. Точки остановки (Breakpoints) также могут быть установлены или убраны, если нажать на левую часть номера строки. Красный круг появляется в первой колонке левого края при добавлении точки остановки (Breakpoints). «Clear Breakpoints» — данная команда удаляет все точки остановки (breakpoints). «Ignore Breakpoints» — данная команда временно отключает все точки остановки (breakpoints).
Закладки (BookMarks)
Закладки (BookMarks) не взаимодействуют с отладчиком, но могут быть полезны в длинной программе для быстрого перемещения между различными разделами программы.
Переменные счетчики (Watch Variables)
В списке счетчиков могут быть добавлены переменные “Watch” в нижней части интерфейса программы. Имя переменной может быть введено непосредственно. В качестве альтернативы переменная может быть выбрана в программном коде и добавлена с помощью “ctrl-W” или с помощью контекстного меню правого клика мыши.
Всякий раз, когда программа останавливается, будут показаны текущие значения переменных счетчиков.
Различные параметры переменных счетчиков могут быть использованы для изменения текущего значения переменной или остановки программы, когда значение переменной изменяется или превышает или равна определенному значению. Вы также можете использовать квадратные скобки для просмотра элементов массива, например, data[5] или data[i].
Переменные и Стек вызовов (Variables & Call Stack)
Используйте команду Переменные и Стек вызовов (Variables & Call Stack) для создания окна, которое отображает все значения переменных программы и стек вызовов каждый раз, когда программа останавливается.
Поделиться в соцсетях…
SMALL-BASIC.RU → SMALL BASIC PRIME – расширенная интегрированная среда разработки (IDE) для Small Basic.
2019 — © INFA-Education.RU
Учебник по командам Visual Basic
Леон Уильямс
Visual Basic, как и любой другой язык программирования, использует специальные ключевые слова, известные как команды. В отличие от переменных, которые именуются и определяются в вашем коде, имена команд определяются самим языком Visual Basic и не могут быть изменены.
Что такое команды Visual Basic?
Разница между переменной и командой в программировании аналогична разнице между существительным и глаголом в английском языке. Переменная содержит данные, но команда оценивает эти данные или манипулирует ими.
Различия в именах и использовании разных команд — это, по сути, то, что отличает один язык программирования от другого. Как программист, вы можете выполнить одну и ту же задачу на языке C++ или Visual Basic, но задействованный код будет сильно различаться между двумя проектами из-за того, как каждый язык определяет и интерпретирует команды.
В программировании на Visual Basic самые основные команды, которые вы будете использовать снова и снова в своих проектах, можно разделить на три категории: объявления, операторы/математика и циклы.
Основные команды Visual Basic по категориям
ОБЪЯВЛЕНИЯ
Языки программирования используют команды, называемые «объявлениями», для определения и заполнения переменных. Объявления могут стать камнем преткновения для новичков в Visual Basic, поскольку большая часть используемого синтаксиса уникальна для Visual Basic.
«Dim» (и «As») используется для объявления переменной. Примеры: «затемнить MyString как строку» или «n = уменьшить n как целое число».
«Статический» подобен тому, что можно было бы назвать «глобальным» в других языках; «статическая» переменная не теряет своего присвоенного значения до тех пор, пока вся программа не будет завершена. (То есть, он не теряет своей ценности каждый раз, когда завершается конкретная процедура.)
«Общая» определяет переменную, которая может использоваться извне (т. е. процедурами, отличными от той, в которой она создана).
ОПЕРАТОРЫ И МАТЕМАТИКА
Основные математические функции относятся к категории «операторы». Математические символы, такие как «+», «-», «/» и «*», служат своей обычной цели. Сравнительные операторы, такие как «и» и «или», также используются так же, как и в других языках. Другие команды Visual Basic, относящиеся к категории операторов:
«Eqv» выполняет сравнение двух логических переменных. Команда «Output = YesNoA eqv YesNoB» установит для переменной Output значение «true», если и YesNoA, и YesNoB верны.
«Нравится» сравнивает строку с образцом. Команда «Output = MyString as MyPattern» вернет «истинное» значение для Output, если MyString соответствует шаблону, определенному MyPattern.
ЦИКЛЫ
Основное использование циклов и условных аргументов в программировании на Visual Basic во многом идентично другим современным языкам программирования. Знакомые аргументы «если/то/иначе», «пока» и «для каждого/следующего» доступны для использования в программировании на Visual Basic.
«Wend» используется как команда «конец» для цикла «пока» в Visual Basic. Программистам, знакомым с языками, в которых в цикле «пока» используется «конец», или с языками, ограничивающими закрытие цикла «пока» с помощью контейнеров с круглыми скобками, следует обратить внимание на команду «венд».
Другие команды Visual Basic
Эти три категории ни в коем случае не являются исчерпывающим справочником по командам Visual Basic. Есть еще сотни. Одним из преимуществ Visual Basic является преобладание предопределенных команд для расширенных математических концепций и взаимодействия с операционной системой. Многие процессы, которые вам пришлось бы создавать «вручную» в других языках, доступны в Visual Basic в виде уже существующих команд, особенно когда речь идет о таких вещах, как разбор и сравнение файлов или создание элементов Windows и управление ими.
Ссылки
- MSDN Visual Basic Developer Center
Writer Bio
Леон Уильямс работал редактором художественной литературы, продавцом спортивных товаров, рок-музыкантом, системным аналитиком, специалистом службы поддержки и координатором по маркетингу. Он имеет степень бакалавра Университета Северного Мичигана, где изучал английский язык, информатику и новые медиа. Его работы были опубликованы на различных онлайн-площадках, а также в серии книг «Читатель ванной дяди Джона».
Непонятный и устаревший синтаксис VB
Visual Basic 6.0 и Visual Basic для приложений поддерживают множество сомнительных и не очень полезных устаревших операторов и ключевых слов. В этой статье рассматриваются запутанные операторы VB и синтаксис старого стиля, который сегодня редкость.
Язык с долгой историей со временем будет иметь некоторые устаревшие синтаксические функции. Понимание старого кода может быть затруднено, если он содержит недокументированные ключевые слова или команды, которые вы обычно не используете. Это справедливо и для Visual Basic.
Большая часть старого синтаксиса VB исходит от его предшественников DOS. Непосредственным предшественником VB был Microsoft QuickBasic, язык программирования для DOS. Синтаксис QuickBasic был очень похож на VB. Для обратной совместимости VB поддерживает многие синтаксические функции, которые были полезны в QuickBasic, хотя в VB они уже не очень полезны. Более того, язык Visual Basic обновлялся между различными версиями, в результате чего часть языка устарела.
Эта статья посвящена странностям Visual Basic 6.0 и VBA. Чтение статьи поможет вам избежать и устранить потенциально запутанный код.
PA Этот знак означает, что Project Analyzer обнаруживает упомянутый синтаксис, чтобы вы могли его переписать. Project Analyzer — это анализатор кода Visual Basic и VBA, который выполняет проверку кода, чтобы помочь вам улучшить ваши проекты.
Звоните
Вызов подимя ( аргументов )
Вызов
является лишним ключевым словом для вызова подпрограмм. Ключевое слово не делает ничего полезного. Вы можете удалить его. Как ни странно, если вы удалите его, вам также нужно будет удалить круглые скобки вокруг списка аргументов. В противном случае вы, скорее всего, получите ошибку. Поэтому часто безопаснее оставить Call
в покое, если только вы не хотите внести в свою программу новые ошибки.
Особенно неприятный случай Вызов
с одним параметром: Вызов MySub(x)
. Если убрать слово , позвонить по номеру
, код останется прежним, верно? Неправильный. Скобки в синтаксисе Call
-less MySub (x)
принудительно передают x по значению. Если MySub
объявит параметр как ByRef
и намеренно изменит его значение, изменение больше не будет передаваться вызывающей стороне. Это может сломать существующий код. Итак, если вы удалите , позвоните по номеру
, не забудьте также удалить скобки. ПА
Дата
и Время
отчеты
Дата = выражение : Время = выражение
Дата$ = выражение : Время$ = выражение
Вы можете установить текущую дату и время с помощью Date = date
и Time = time
. Вы могли бы, если бы вы были администратором. Если нет, вы получите ошибку времени выполнения 70: Отказано в доступе .
Зачем программе VB изменять системные часы? Если бы у ПК не было часов с батарейным питанием, было бы неплохо позволить пользователю устанавливать дату и время. Современные ПК получают время с онлайн-сервера времени. Нет необходимости спрашивать пользователя, какая сейчас дата.
Интересно, что эти бесполезные утверждения представлены в двух версиях: со знаком доллара и без него. В чем смысл?
Объявить CDDecl
Объявление под|функции имя CDecl Lib "" ()
CDecl
— недокументированное ключевое слово в Visual Basic. Согласно источникам в Интернете, CDecl
реализован только в версии VBA для Mac. Во всех других версиях это не работает. Так для чего это нужно?
В QuickBasic оператор Declare
использовался для вызова как основных, так и неосновных процедур. Значение по умолчанию — Basic, что означает, что аргументы процедуры передаются слева направо. Согласно справке QuickBasic 4.5, необязательный Ключевое слово CDecl
указывает, что объявленная процедура вместо этого использует порядок аргументов языка C: аргументы передаются справа налево. Это означает, что CDecl
= аргументы передаются справа налево.
В Visual Basic (за исключением версии Mac VBA) все операторы Declare
передают свои аргументы справа налево. Таким образом, CDecl
больше ничего не делает. CDecl
может быть опущен и будет удален VB IDE. Как ни странно, CDecl
не совпадает с cdecl
. В Windows необходимо учитывать два разных соглашения о вызовах: cdecl
и stdcall
. Событие, хотя они разные, оба используют порядок прохождения справа налево. Visual Basic поддерживает только stdcall
, а не cdecl
. Даже если вам удастся добавить CDecl
к оператору Declare
, VB не сможет использовать cdecl
. Странный.
DefType
DefBool | DefByte | DefInt | DefLng | DefLngLng | DefLngPtr | ДефКур | DefSng | DefDbl | DefDate | DefStr | DefObj | DefVar буква 1 [- буква 2 ]
Операторы Def Type
объявляют тип данных для переменных, которые иначе стали бы вариантами. Они влияют на объявленные переменные без спецификации типа данных, а также на необъявленные локальные переменные.
По умолчанию Тип
был удобен в эпоху QuickBasic. Тип данных по умолчанию был Single
, и не было возможности требовать объявления переменных. Вы должны использовать суффиксы объявления типа, такие как s$
для String
и i%
для Integer
. С Def Type
вы можете избавиться от суффиксов, не меняя привычки не объявлять свои переменные. DefInt I
установит для всех i-переменных значение Integer
, DefStr S
заставит s-переменные принять значение String
и так далее. Таким образом, вы могли бы указать тип данных переменной по ее начальной букве.
В Visual Basic типом данных по умолчанию является Variant
, что гораздо более гибко, если вы оставили свои переменные необъявленными. Варианты настолько гибки, что ваш код обычно будет работать так, как задумано, даже если вы ничего не знаете о типах данных. Более того, вы можете использовать Option Explicit
, чтобы требовать явного объявления всех локальных переменных. 9Таким образом, 0071 Def Type стал менее полезным. Это может сбивать с толку, потому что разработчики могут не ожидать найти его в сегодняшнем коде. Ошибки могут появиться, когда тип данных нетипизированной переменной не Variant
, как можно было бы ожидать. ПА
Тусклый Общий
Dim Shared имя_переменной
Shared
— это ключевое слово, ранее использовавшееся с операторами Dim
. Это не имеет никакого эффекта. Shared
существует для обратной совместимости с языками до VB, такими как Microsoft QuickBasic и Basic Compiler. В QuickBasic Dim Shared
использовался для объявления переменных уровня модуля, доступных в процедурах, аналогично переменным уровня модуля в VB. Shared
не действует в VB, поскольку все переменные уровня модуля всегда доступны в процедурах модуля. Если написать Dim Shared
в VB6, слово Shared
исчезнет и останется только Остается диммер
.
Уравнение
x экв. y
Оператор Eqv
выполняет побитовое сравнение эквивалентности двух целых чисел. Eqv
не эквивалентен оператору is, а является своего рода оператором Not Xor
. x Eqv y
совпадает с Not (x Xor y)
.
Важно понимать, что Eqv
не является альтернативой оператору равенства ( =
). В то время как 2 = 3
возвращает False
, 2 Eqv 3
возвращает ненулевой результат и равен True
. Eqv
вернет ноль, только если биты операндов не равны.
Эрл
Функция Erl
используется в обработчиках ошибок. Он возвращает номер строки, в которой произошла ошибка. Если в строке, где произошел сбой, нет номера строки, Erl
возвращает номер предыдущей строки. Erl
не работает с метками строк. Он также не работает с большими номерами строк, текущий максимум равен 65535. Если номер строки больше, Erl
вместо этого вернет неожиданное число. Основным недостатком Erl
является то, что он требует, чтобы исходный код был пронумерован, что редко бывает в случае с VB, если вы не используете такой инструмент, как VB Watch, который преднамеренно добавляет номера строк для обработки ошибок.
Числа с плавающей запятой с показателем D
Числа с плавающей запятой, которые обычно записываются как 1E+6
, также могут быть записаны в альтернативном синтаксисе: 1D+6
. Оба представляют миллион: 6 нулей после 1.
Устаревший синтаксис D первоначально объявлял значение Double
, а синтаксис E предназначался для значений Single
. Согласно справке VB 1.0, самое большое значение E было 3.402823E38
, но с D вы можете дойти до 1.797693134862315D308
.
В VB6 и VBA больше нет разницы. Они автоматически заменят D на E. Однако вы все равно можете использовать D-значения в строках. Таким образом, Val("1D+6") = 1000000
. Это может сбивать с толку, если вы не знаете объяснения.
Глобальный
Global
является синонимом Public
. В старые добрые времена Global
было единственным ключевым словом VB, которое могло изменить область видимости переменной или константы. Ключевые слова Общедоступный
, Частный
и Друг
не существовал.
VB6 и VBA по-прежнему позволяют использовать Global
для определения переменных и констант. Но если вы попробуете это на Sub
, Function
, Property
, Enum
или Type
, VB (обычно) удалит слово и будет вести себя так, как если бы вы написали Public
.
GoSub
, возврат
GoSub линия
строка : : Возврат
GoSub
— это способ вызова подпрограммы внутри самой процедуры. GoSub
перейдет к заданной строке, выполнит следующие операторы до оператора Return
. Возврат
возобновится с оператора рядом с GoSub
.
Это был единственный способ иметь подпрограммы до того, как стали доступны Подпрограммы и Функции. То есть задолго до того, как был изобретен VB. Обычно вы не используете GoSub
в ВБ. Подпрограммы и функции гораздо более структурированы.
Есть еще одно специальное применение для GoSub
в VB. Это процедура с большим количеством локальных переменных. Если вы хотите получить доступ к локальным переменным в другом Sub
или Function
, вам нужно либо передать их как параметры, либо переместить определения переменных на уровень модуля. Это не всегда может быть желательным. Путем реализации подпрограммы с GoSub
и Return
, вы избегаете передачи локальных данных, которые могут пригодиться. Однако это может легко привести к излишне сложной рутине. Так что лучше оставить GoSub
неиспользованным, если он вам действительно не нужен. ПА
Если..Перейти
Если условие Перейти к строке
Знаете ли вы, что вы можете написать оператор If
без оператора Then
? Да, это правда, но для однострочного Если только операторы
. If..GoTo
эквивалентно If..Then GoTo
. VB6 и VBA автоматически добавят ключевое слово Then
, но технически If. .GoTo
по-прежнему приемлемо.
Если..Тогда 10 Иначе 20
Если условие Тогда linenum [иначе linenum ]
Знаете ли вы, что оператор GoTo
является необязательным после Затем
и Еще
? Это верно для однострочных операторов If
. Вы можете опустить Перейти к
и просто добавить номер целевой строки. Однако это не будет работать с метками строк. Изначально это была задокументированная функция языка VB. VB6 и VBA, однако, добавят пропущенный GoTo
, что заставит вас использовать GoTo
, а не более короткий формат GoTo
-less.
Бес
x Бес у
Imp
— оператор логического следования: x → y . Мало кто понимает это правильно. Обоснование Бес
трудно понять, если вы не связаны с логикой. Лучше всего переписать. x Imp y
совпадает с (не x) или y
. Последнее гораздо понятнее, если только все разработчики, работающие над кодом, не помнят логические операторы из своего курса логики.
Междунар.
Внутренний ( номер )
Функция Int
возвращает целую часть десятичного числа? Неправильный. Это не так. Он возвращает наибольшее целое число, меньшее или равное числу. Int(3.1) = 3
, но Int(-3.1) = -4
. Это источник ошибок и путаницы.
Функция Fix
всегда будет возвращать целую часть. Исправить(-3.1) = -3
. Когда ожидаются отрицательные числа, Fix
является более естественным, чем Int
.
Пусть
[Let] переменная = значение
Ключевое слово Let
является излишним. Нет причин его использовать. Let ничего не добавляет к вашей программе и не облегчает ее чтение или понимание. Вы всегда можете его опустить. VB позволяет вам писать его, но на самом деле он должен автоматически удалять его. ПА
Номера строк
Номера строк действительно устарели Basic. Давным-давно все линейки Basic были пронумерованы. Это уже не так. Номера строк имеют тенденцию появляться только как цели GoTo
, GoSub
, On Error GoTo
и Resume
. Вместо номеров строк вы можете использовать гораздо более описательные метки строк. Номера строк сейчас редкость.
Единственным полезным применением номеров строк является обработка ошибок. В обработчике ошибок функция Erl возвращает номер строки, в которой произошла ошибка (если число равно 65535 или меньше). Эта функция недоступна каким-либо другим способом.
В VB6 и VBA минимальный номер строки — 0, а недокументированный максимальный — 999999999 (9 цифр). Номера строк не обязательно должны располагаться в числовом порядке. Вполне допустимо начинать с 1000 и опускаться до 0,
.
LSet
, RSet
LSet переменная = значение
RSet переменная = значение
LНабор
и RSet
предназначены для выравнивания текста по левому и правому краю в строковой переменной. LSet x = y
скопирует содержимое y
в x
при сохранении текущей длины x
. Если x
слишком мало, строка усекается. Если x
длиннее, чем y
, остальная часть дополняется пробелами справа, что делает строку выравниваемой по левому краю. RSet
делает то же самое, но вместо этого отступы будут отображаться слева, выравнивая строку по правому краю.
Очевидно, что эти операторы предназначены для строк фиксированной длины. Еще в старые добрые дни DOS текстовые поля фиксированной длины были обычным явлением на дисплеях и в отчетах, в которых использовались шрифты с фиксированным шагом. Поскольку пользовательские интерфейсы стали более гибкими, строки фиксированной длины уже не так распространены.
LSet
также можно использовать для копирования переменной пользовательского типа в другие пользовательские типы. Это может быть опасно и должно использоваться только с осторожностью.
Далее
с несколькими переменными
Следующий переменная , переменная , переменная
Вам не обязательно нужен оператор Next
для каждого оператора For
. Один оператор Next
может завершить несколько вложенных циклов For
. Следующий k, j, i
эквивалентен Следующий k : Следующий j : Следующий i
. Этот синтаксис имеет смысл редко, если вообще когда-либо. ПА
Восьмеричные числа
Восьмеричные числа выражаются цифрами от 0 до 7. Например, &O10
— это восьмеричное представление десятичного числа 8.
Восьмеричные числа можно считать устаревшими. Поскольку восьмеричная цифра представляет 3 бита, они были полезны в системах с размером слова, кратным 3: 6-битные слова, 12-битные слова и так далее. Сегодняшние системы не используют такие размеры слов. Visual Basic работает на компьютерах с 8-битными байтами и 32-битными или 64-битными словами. В этой среде шестнадцатеричные и десятичные числа более удобны и распространены. Поскольку восьмеричные числа встречаются относительно редко, они могут вызывать проблемы при чтении кода. Во избежание путаницы выражайте числовые значения в десятичном или шестнадцатеричном формате, которые более понятны. ПА
При ошибке Перейти к -1
В значительной степени недокументированный оператор On Error GoTo -1
неясен. Этот оператор не устанавливает обработчик ошибок и не сбрасывает его, как это делает On Error GoTo 0
. Оператор очищает только что возникшую ошибку, готовясь к возникновению новой ошибки. Его можно использовать в обработчике ошибок, который может вызвать новую ошибку. Если в обработчике ошибок возникает ошибка, выполнение процедуры останавливается (и возвращается к вызывающей стороне или вызывает сбой). Звонок On Error GoTo -1
позволяет установить вложенный обработчик ошибок для обработки ошибок, возникающих в обработчике ошибок. Пример:
При ошибке главного обработчика GoTo Ошибка 5 главный обработчик: MsgBox "Произошла ошибка" При ошибке GoTo -1 ' Сбросить ошибку При ошибке GoTo вложенный обработчик Ошибка 6 вложенный обработчик: MsgBox «Произошла ошибка в обработчике ошибок»
В этом примере Ошибка 5
вызовет главный обработчик
и Ошибка 6
вызовет вложенный обработчик
. Если вы пропустите строку с On Error GoTo -1
, вложенный обработчик
не будет выполняться.
На..GoSub
, На..GoTo
На номер GoSub линия 1 , линия 2 , линия 3
На номер Перейти строка 1 , строка 2 , строка 3
On..GoSub
и On..GoTo
являются примитивными альтернативами Select Case
. Оба оператора обеспечивают способ выполнения одной из нескольких ветвей на основе числа. Если число равно единице, выполнение продолжается на строке 1 , если их два, то строка 2 и так далее.
Операторы GoSub
и GoTo
сами по себе не являются структурным программированием. То же самое можно сказать и о On..GoSub
и On..GoTo
, которые настолько неясны, насколько это возможно в операторах VB. Существование этих операторов в коде VB требует перезаписи. ПА
При локальной ошибке
On [Local] Ошибка GoTo|Resume
Ключевое слово Local
в операторе On Error
не действует. В Visual Basic операторы On Error
являются локальными независимо от того, используете ли вы оператор Local 9.ключевое слово 0072 или нет. Оставьте
Локальный
, чтобы никого не сбить с толку разницей между локальными и нелокальными обработчиками ошибок, поскольку в любом случае единственным вариантом является локальный обработчик ошибок. ПА
Локальный
— это устаревшее ключевое слово. Согласно справке VB 1.0, он изначально предназначался для совместимости с Microsoft QuickBasic и Basic Compiler. Документация выглядит неправильно, поскольку QuickBasic 4.5 ее не поддерживает.
Оператор + на строки
строка1 + строка2
Оператор плюс ( +
) обычно объединяет две строки. Для любых двух строк a + b = a & b
. Но если любой из аргументов является числом, VB попытается суммировать их:
.
"2" + "3" = "23" «2» + 3 = 5
Запутанно! При добавлении текста к номеру возникает ошибка:
"а" + 3 ⇒ ошибка
Лучше избегать +
со строками. VB должен предупредить об этом.
Дополнительное основание
Опция Базовая 0|1
Option Base
— это устаревший оператор, определяющий нижнюю границу массивов. Возможные нижние границы — 0 и 1, по умолчанию — 0,
.
Оператор не нужен в Visual Basic. VB всегда позволял программистам объявлять нижнюю границу массивов в операторах Dim
.
Дополнительный частный модуль
Этот оператор совершенно бесполезен в VB6. Тем не менее, он используется в VBA. В VBA параметр Option Private Module
предотвращает использование содержимого модуля вне его собственного проекта.
Рем
Rem примечание
Rem
— старый способ добавления примечаний к программе. Visual Basic поддерживает более удобный апостроф ( '
) синтаксис начиная с версии 1.0. Никогда не было причин использовать Rem
. Он существует только для обратной совместимости. ПА
Сброс
, Закрыть
Оператор Reset
закрывает все открытые файлы и предположительно записывает все файловые буферы на диск. Оператор Close
, если за ним не следуют какие-либо номера файлов, также закрывает все файлы, но не очищает буферы. Согласно справке VB 1.0, Сброс
должен был называться после Закрыть
. Документация VB 6.0 не относится к этому использованию. Неясно, есть ли реальная разница. Другой вопрос, с какой стати вы хотите держать свои файлы открытыми и закрывать их все сразу? Разве вы не хотели бы закрывать каждый файл, как только он не требуется, не оставляя без необходимости какие-либо используемые файлы открытыми? Лучше использовать Close filenum
, чтобы явно закрыть каждый файл сразу после использования и не привлекать ошибок, оставляя файлы открытыми и закрывая их одним оператором.
Резюме 0
В обработчике ошибок Возобновить 0
перезапустит выполнение оператора, который завершился ошибкой. Возобновление 0
точно такое же, как Возобновление
без нуля. Ноль и не нужен, и сбивает с толку. Любой, кто читает код, может легко подумать, что выполнение будет повторяться со строки 0, и задаться вопросом, где может быть строка 0. Лучше не иметь нуля в утверждении.
Статический перевод
, Статическая функция
, Статическое свойство
Атрибут Static
в заголовке процедуры заставляет все локальные переменные быть Static
в этой процедуре. Это способ избежать объявления каждой переменной с оператором Static varname
. Этот стиль программирования, возможно, восходит к эпохе, когда локальные переменные вообще не объявлялись.
Статические переменные
сохраняются между вызовами процедуры. Все в порядке. Имея все переменные Статика
это другое. Это может запутать человека, который читает или модифицирует код. Существуют варианты использования переменных Static
, но более явно объявлять каждую переменную с помощью оператора Static
, а не полагаться на ключевое слово Static
в объявлении процедуры. Таким образом, держитесь подальше от Static Sub
, Static Function
и Static Property
и вместо этого используйте Static varname
.
9 Как LongLong
. Последний вариант доступен в VBA 7. PA
Пока..Венд
Хотя условие : заявления : Венд
Синтаксис цикла While..Wend
очень старый. Do..Loop
, доступный еще до изобретения VB, давно заменил его. Сегодня вы должны использовать Do..Loop
как более универсальный. Для большинства применений While..Wend
точно такой же, как Do While..Loop
. While..Wend
может сбить с толку разработчиков, которые не распознают устаревший синтаксис. ПА
Особый случай, требующий использования Хотя..Wend
существует. Это когда вам нужно вложить два или более цикла и вы хотите выйти из нескольких циклов одной командой.
Делать Пока состояние Если выйти, то выйти, сделать Венд Петля
В этом примере Exit Do
одновременно выйдет из циклов Do
и While
. Умный! Вы не могли бы сделать это с двумя вложенными циклами Do
.
Ширина #
Ширина # filenum , значение
Оператор Width
предназначен для записи текстовых файлов. Он устанавливает фиксированную длину строки в выходном файле. Оператор Width
влияет на последовательные Напечатать операторы #
, но не Написать операторы #
.