Операторы языка программирования vba

Операторы в Visual Basic

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

  • Операторы объявления, которые называют переменную, константу или процедуру, а также могут указывать тип данных.
  • Исполняемые операторы, которые инициируют действия. Эти инструкции могут вызывать метод или функцию, а также могут циклически или ветвить блоки кода. К исполняемым операторам относятся операторы присваивания, которые присваивают значение или выражение переменной или константе.

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

Инструкции объявления

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

В следующем примере содержатся три объявления.

Public Sub ApplyFormat() Const limit As Integer = 33 Dim thisWidget As New widget ' Insert code to implement the procedure. End Sub 

Первым объявлением Sub является оператор . Вместе с оператором matching End Sub он объявляет процедуру с именем applyFormat . Он также указывает , что applyFormat является Public , что означает, что любой код, который может ссылаться на него, может вызывать его.

Читайте также:  Отличие python от других языков программирования

Второе объявление — это Const оператор , который объявляет константу limit , указывающую Integer тип данных и значение 33.

Третьим объявлением Dim является оператор , который объявляет переменную thisWidget . Тип данных — это конкретный объект, а именно объект, созданный из Widget класса . Можно объявить переменную любым элементарным типом данных или любым типом объекта, который предоставляется в используемом приложении.

Начальные значения

При выполнении кода, содержащего оператор объявления, Visual Basic резервирует память, необходимую для объявленного элемента. Если элемент содержит значение, Visual Basic инициализирует его значением по умолчанию для его типа данных. Дополнительные сведения см. в разделе «Поведение» в операторе Dim.

Начальное значение переменной можно присвоить как часть ее объявления, как показано в следующем примере.

Dim m As Integer = 45 ' The preceding declaration creates m and assigns the value 45 to it. 

Если переменная является объектной переменной, можно явно создать экземпляр ее класса при объявлении с помощью ключевое слово New Operator, как показано в следующем примере.

Dim f As New FileInfo("filename") 

Обратите внимание, что начальное значение, указанное в операторе объявления, не присваивается переменной до тех пор, пока выполнение не достигнет ее оператора объявления. До этого времени переменная будет содержать значение по умолчанию для своего типа данных.

Исполняемые инструкции

Исполняемая инструкция выполняет действие. Он может вызывать процедуру, ветвь в другое место в коде, циклически перебирать несколько операторов или вычислять выражение. Оператор присваивания — это особый случай исполняемого оператора.

В следующем примере используется If. Then. Else структура управления для выполнения различных блоков кода на основе значения переменной. В каждом блоке For. Next кода цикл выполняется указанное количество раз.

Public Sub StartWidget(ByVal aWidget As widget, ByVal clockwise As Boolean, ByVal revolutions As Integer) Dim counter As Integer If clockwise = True Then For counter = 1 To revolutions aWidget.SpinClockwise() Next counter Else For counter = 1 To revolutions aWidget.SpinCounterClockwise() Next counter End If End Sub 

Оператор If в предыдущем примере проверяет значение параметра clockwise . Если значение равно True , вызывается spinClockwise метод . aWidget Если значение равно False , вызывается spinCounterClockwise метод . aWidget Структура If. Then. Else элемента управления заканчивается на End If .

Цикл For. Next в каждом блоке вызывает соответствующий метод несколько раз, равных значению revolutions параметра.

Инструкции присваивания

Операторы присваивания выполняют операции присваивания, которые состоят из получения значения справа от оператора присваивания ( = ) и сохранения его в элементе слева, как показано в следующем примере.

В предыдущем примере инструкция присваивания сохраняет литеральное значение 42 в переменной v .

Подходящие элементы программирования

Программный элемент в левой части оператора присваивания должен иметь возможность принимать и хранить значение. Это означает, что это должна быть переменная или свойство, которое не является ReadOnly, или элемент массива. В контексте оператора присваивания такой элемент иногда называется lvalue для «левого значения».

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

В предыдущем примере значение, хранящееся в переменной y , добавляется к значению, хранящееся в переменной z , а затем добавляется значение, возвращаемое вызовом функции findResult . Затем общее значение этого выражения сохраняется в переменной x .

Типы данных в инструкциях присваивания

Помимо числовых значений, оператор присваивания также может назначать String значения, как показано в следующем примере.

Dim a, b As String a = "String variable assignment" b = "Con" & "cat" & "enation" ' The preceding statement assigns the value "Concatenation" to b. 

Вы также можете назначать Boolean значения с помощью Boolean литерала или Boolean выражения, как показано в следующем примере.

Dim r, s, t As Boolean r = True s = 45 > 1003 t = 45 > 1003 Or 45 > 17 ' The preceding statements assign False to s and True to t. 

Аналогичным образом можно назначить соответствующие значения программным элементам Char типа данных , Date или Object . Вы также можете назначить экземпляр объекта элементу, объявленному как классу, из которого создается этот экземпляр.

Составные инструкции присваивания

Сложные операторы присваивания сначала выполняют операцию с выражением, прежде чем присвоить его программному элементу. В следующем примере показан один из этих операторов , += который увеличивает значение переменной в левой части оператора на значение выражения справа.

В предыдущем примере 1 добавляется к значению n , а затем сохраняется новое значение в n . Это сокращенный эквивалент следующего оператора:

С помощью операторов этого типа можно выполнять различные сложные операции присваивания. Список этих операторов и дополнительные сведения о них см. в разделе Операторы назначения.

Оператор присваивания объединения ( &= ) полезен для добавления строки в конец уже существующих строк, как показано в следующем примере.

Dim q As String = "Sample " q &= "String" ' q now contains "Sample String". 

Преобразования типов в инструкциях присваивания

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

Сведения о преобразовании между типами данных см. в разделе Преобразования типов в Visual Basic. Вкратце, Visual Basic автоматически преобразует значение заданного типа в любой другой тип, до которого оно расширяется. Расширяющееся преобразование — это преобразование в , которое всегда выполняется успешно во время выполнения и не теряет никаких данных. Например, Visual Basic преобразует значение в Integer Double , если это необходимо, так как Integer расширяется до Double . Для получения дополнительной информации см. Widening and Narrowing Conversions.

Сужающие преобразования (которые не расширяются) несут риск сбоя во время выполнения или потери данных. Вы можете выполнить сужающее преобразование явным образом с помощью функции преобразования типов или направить компилятор на выполнение всех преобразований неявно, задав . Option Strict Off Дополнительные сведения см. в разделе Неявные и явные преобразования.

Размещение нескольких операторов в одной строке

В одной строке можно использовать несколько операторов, разделенных символом двоеточия ( : ). Это показано в следующем примере.

Dim sampleString As String = "Hello World" : MsgBox(sampleString) 

Хотя этот синтаксис иногда и удобен, он затрудняет чтение и обслуживание кода. Таким образом, рекомендуется сохранить один оператор в строке.

Продолжение инструкции по нескольким строкам

Оператор обычно помещается в одну строку, но если он слишком длинный, его можно продолжить на следующую строку с помощью последовательности продолжения строки, которая состоит из пробела, за которым следует символ подчеркивания ( _ ), за которым следует возврат каретки. В следующем примере исполняемый MsgBox оператор продолжается на две строки.

Public Sub DemoBox() Dim nameVar As String nameVar = "John" MsgBox("Hello " & nameVar _ & ". How are you?") End Sub 

Неявное продолжение строки

Во многих случаях оператор можно продолжить в следующей строке, не используя символ подчеркивания ( _ ). Следующие элементы синтаксиса неявно продолжают оператор в следующей строке кода.

Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function 
Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 ) 
Dim customer = New Customer With
cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'" 
Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath) 
Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory 
If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If 
Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath) 

Однако при использовании With инструкции или указании значений в списке инициализации для типа необходимо включить символ продолжения строки ( _ ) после символа квалификатора элемента. При использовании With инструкций или списков инициализации объектов рекомендуется разбивать строку после оператора присваивания (например, = ). Пример:

' Not allowed: ' Dim aType = New With < . ' PropertyName = "Value" ' Allowed: Dim aType = New With Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End With 
Dim customerName = customerXml. .Value Dim customerEmail = customerXml. .Value 
 < Serializable() >Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class 
Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle 
For Each p In vsProcesses Console.WriteLine("" & vbTab & "" & vbTab & "", p.ProcessName, p.Id, p.MainWindowTitle) Next 
Dim days = New List(Of String) From

Добавление комментариев

Исходный код не всегда является понятным даже для программиста, который его написал. Поэтому для документирования кода большинство программистов свободно используют встроенные комментарии. Комментарии в коде могут объяснить процедуру или определенную инструкцию для тех, кто читает или работает с ними позже. Visual Basic игнорирует комментарии во время компиляции и не влияет на скомпилированный код.

Строки комментариев начинаются с апострофа ( ' ) или REM пробела. Их можно добавить в любом месте кода, за исключением строки. Чтобы добавить комментарий к оператору, вставьте апостроф или REM после оператора, а затем комментарий. Комментарии также могут идти в отдельной строке. В следующем примере показаны эти возможности.

' This is a comment on a separate code line. REM This is another comment on a separate code line. x += a(i) * b(i) ' Add this amount to total. MsgBox(statusMessage) REM Inform operator of status. 

Проверка ошибок компиляции

Если после ввода строки кода строка отображается с волнистым синим подчеркиванием (также может появиться сообщение об ошибке), в операторе есть синтаксическая ошибка. Необходимо выяснить, что не так с оператором (путем поиска в списке задач или наведения указателя мыши на ошибку и чтения сообщения об ошибке) и исправить его. Пока вы не исправите все синтаксические ошибки в коде, программа не сможет правильно скомпилироваться.

Связанные разделы

Термин Определение
Операторы присваивания Содержит ссылки на страницы справочника по языку, охватывающие операторы присваивания, такие как = , *= и &= .
Операторы и выражения Показывает, как объединять элементы с операторами для получения новых значений.
Практическое руководство. Разбиение и объединение инструкций в коде Показывает, как разбить один оператор на несколько строк и разместить несколько операторов в одной строке.
Практическое руководство. Операторы меток Показывает, как пометить строку кода.

Источник

Оцените статью