что такое sub в vba

VBA-Урок 9. Процедуры и функции

Чтобы сделать процедуру доступной только в определенном модуле, используется ключевое слово Private:

Запуск процедуры с середины другой процедуры

Чтобы выполнить процедуру с середины другой процедуры, просто введите ее название.

Здесь есть очень простой пример:

Аргументы

Аргументы делают возможным использование значений из процедуры в под-процедуры (запомните, что по умолчанию, переменные являются доступны только по той процедуры, в которой они были объявлены).

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

К процедуре «warning» был добавлен аргумент, в данном случае это переменная «var_text» с типом «String» (строка):

Эта процедура требует аргумент, поэтому мы должны поставить значение после «warning», чтобы выполнить ее:

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

Необязательные аргументы

По умолчанию, если процедура имеет аргументы, то они должны быть обязательно проставлены, и если они не проставлены, тогда процедура не выполнится.

Теперь эта процедура может быть выполнена с или без опционального аргумента, как здесь:

Аргументы должны быть введены в правильном порядке.

Здесь есть пример, который использует два фрагмента кода, которые рассматривались выше:

См. рисунок ниже (пример 1):

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Чтобы стало понятнее, ниже есть пример того, что произойдет, если макрос будет запущен на выполнение:

Ниже вы можете увидеть как предыдущий код и ByVal работают:

Функции

Основным отличием между процедурой и функцией является то, что функция возвращает значение.

Вот простой пример:

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

Например, чтобы получить квадрат значения, которое введенное в ячейку A1:

Источник

Процедуры типа Sub

Процедуры типа Sub

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

Public Sub ПриятнаяПроцедура()

Dim ДоброеСообщение As String

Первая строка, объявление процедуры типа Sub, решает две жизненно важные задачи.

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

Каждая процедура типа Sub должна заканчиваться оператором End Sub, который дает VBA знать, где следует прекратить выполнение программного кода.

Элементы объявления процедуры типа Sub

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

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

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

15.3 Программы и процедуры RPC

15.3 Программы и процедуры RPC Основные концепции RPC достаточно просты:? Служба RPC реализуется одной или несколькими выполняющимися на сервере программами. Например, существуют отдельные программы управления доступом и блокировок файлов.? Каждая программа может выполнять

15.6.2 Процедуры portmapper

15.6.2 Процедуры portmapper Выполняемые программой portmapper процедуры перечислены в таблице 15.2.Таблица 15.2 Процедуры portmapper Процедура Описание PMAPPROC_NULL Возвращает ответ, указывающий на активное состояние portmapper. PMAPPROC_SET Используется при регистрации службы (т.е. при включении в

15.7.2 Процедуры rpcbind

15.7.2 Процедуры rpcbind Процедуры программы rpcbind версии 4 представлены в таблице 15.3.Таблица 15.3 Процедуры rpcbind Процедура Описание RPCBPROC_SET Используется службой регистрации программ через локальную RPCBIND. RPCBPROC_UNSET Используется для отмены регистрации локальной

15.15.1 Процедуры монтирования

15.15.1 Процедуры монтирования Процедуры, поддерживающие программу mount на сервере, показаны в таблице 15.4.Таблица 15.4 Процедуры монтирования Процедура Описание 0 Null (пустая): Ответ указывает на активность программы. 1 Add Mount Entry (добавить точку монтирования): В список команды

15.17.2 Процедуры NFS

15.17.2 Процедуры NFS Существуют процедуры NFS, обеспечивающие клиенту доступ, чтение или запись удаленного файла. Клиент может узнать структуру и реальную емкость удаленной файловой системы либо запросить атрибуты удаленного файла. Допустимо удалять и переименовывать

3.2. Процедуры

2. Процедуры и функции для переменных строкового типа

2. Процедуры и функции для переменных строкового типа 1. Function Copy(S: String; Index, Count: Integer): String; Возвращает подстроку строки. S – выражение типа String.Index и Count – выражения целого типа. Функция возвращает строку, содержащую Count символов, начинающихся с позиции Index. Если Index больше, чем

Процедуры

Процедуры Введение Наконец-то мы принимаемся за хорошую главу!К этому моменту мы изучили почти все основные особенности компиляторов и синтаксического анализа. Мы узнали как транслировать арифметические выражения, булевы выражения, управляющие конструкции,

Элементы объявления процедуры типа Sub

Элементы объявления процедуры типа Sub В операторе объявления процедуры первый термин Public определяет область видимости процедуры. Для области видимости можно указать либо Public, либо Private. При этом Public подразумевается по умолчанию, так что это ключевое слово можно

Процедуры типа Function

Отличия процедур типа Function от процедур типа Sub

Отличия процедур типа Function от процедур типа Sub Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя

11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа

11. Строковый тип в Pascal. Процедуры и функции для переменных строкового типа Последовательность символов определенной длины называется строкой. Переменные строкового типа определяются путем указания имени переменной, зарезервированного слова string, и возможно, но не

Источник

Sub statement

Declares the name, arguments, and code that form the body of a Sub procedure.

Syntax

[ Private | Public | Friend ] [ Static ] Sub name [ ( arglist ) ]
[ statements ]
[ Exit Sub ]
[ statements ]
End Sub

The Sub statement syntax has these parts:

PartDescription
PublicOptional. Indicates that the Sub procedure is accessible to all other procedures in all modules. If used in a module that contains an Option Private statement, the procedure is not available outside the project.
PrivateOptional. Indicates that the Sub procedure is accessible only to other procedures in the module where it is declared.
FriendOptional. Used only in a class module. Indicates that the Sub procedure is visible throughout the project, but not visible to a controller of an instance of an object.
StaticOptional. Indicates that the Sub procedure’s local variables are preserved between calls. The Static attribute doesn’t affect variables that are declared outside the Sub, even if they are used in the procedure.
nameRequired. Name of the Sub; follows standard variable naming conventions.
arglistOptional. List of variables representing arguments that are passed to the Sub procedure when it is called. Multiple variables are separated by commas.
statementsOptional. Any group of statements to be executed within the Sub procedure.

The arglist argument has the following syntax and parts:

[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ As type ] [ = defaultvalue ]

PartDescription
OptionalOptional. Keyword indicating that an argument is not required. If used, all subsequent arguments in arglist must also be optional and declared by using the Optional keyword. Optional can’t be used for any argument if ParamArray is used.
ByValOptional. Indicates that the argument is passed by value.
ByRefOptional. Indicates that the argument is passed by reference. ByRef is the default in Visual Basic.
ParamArrayOptional. Used only as the last argument in arglist to indicate that the final argument is an Optional array of Variant elements. The ParamArray keyword allows you to provide an arbitrary number of arguments. ParamArray can’t be used with ByVal, ByRef, or Optional.
varnameRequired. Name of the variable representing the argument; follows standard variable naming conventions.
typeOptional. Data type of the argument passed to the procedure; may be Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (not currently supported), Date, String (variable-length only), Object, Variant, or a specific object type. If the parameter is not Optional, a user-defined type may also be specified.
defaultvalueOptional. Any constant or constant expression. Valid for Optional parameters only. If the type is an Object, an explicit default value can only be Nothing.

Remarks

If not explicitly specified by using Public, Private, or Friend, Sub procedures are public by default.

If Static isn’t used, the value of local variables is not preserved between calls.

The Friend keyword can only be used in class modules. However, Friend procedures can be accessed by procedures in any module of a project. A Friend procedure doesn’t appear in the type library of its parent class, nor can a Friend procedure be late bound.

Sub procedures can be recursive; that is, they can call themselves to perform a given task. However, recursion can lead to stack overflow. The Static keyword usually is not used with recursive Sub procedures.

All executable code must be in procedures. You can’t define a Sub procedure inside another Sub, Function, or Property procedure.

The Exit Sub keywords cause an immediate exit from a Sub procedure. Program execution continues with the statement following the statement that called the Sub procedure. Any number of Exit Sub statements can appear anywhere in a Sub procedure.

Like a Function procedure, a Sub procedure is a separate procedure that can take arguments, perform a series of statements, and change the value of its arguments. However, unlike a Function procedure, which returns a value, a Sub procedure can’t be used in an expression.

You call a Sub procedure by using the procedure name followed by the argument list. See the Call statement for specific information about how to call Sub procedures.

Variables used in Sub procedures fall into two categories: those that are explicitly declared within the procedure and those that are not. Variables that are explicitly declared in a procedure (using Dim or the equivalent) are always local to the procedure. Variables that are used but not explicitly declared in a procedure are also local unless they are explicitly declared at some higher level outside the procedure.

A procedure can use a variable that is not explicitly declared in the procedure, but a naming conflict can occur if anything you defined at the module level has the same name. If your procedure refers to an undeclared variable that has the same name as another procedure, constant or variable, it is assumed that your procedure is referring to that module-level name. To avoid this kind of conflict, explicitly declare variables. You can use an Option Explicit statement to force explicit declaration of variables.

You can’t use GoSub, GoTo, or Return to enter or exit a Sub procedure.

Example

This example uses the Sub statement to define the name, arguments, and code that form the body of a Sub procedure.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

VBA SUB

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Подфункция VBA

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

Давайте посмотрим, как писать подпроцедуры в Excel VBA?

Базовая структура VBA Sub

Sub (подпроцедура или название задачи) ()

(Какую задачу нужно выполнить?)

End Sub

Примечание: Sub может принимать только аргументы, они не возвращают результаты

Различные типы подпрограмм в VBA (модификаторы доступа)

Как использовать подфункцию в Excel VBA?

Ниже приведены различные примеры использования Sub Function в Excel с использованием кода VBA.

Шаг 1. На вкладке « Разработчик » щелкните Visual Basic в группе « Код » или используйте сочетание клавиш Alt + F11.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 2: Теперь вы можете создать пустой модуль, т.е. щелкнуть правой кнопкой мыши на Sheet1 (VBA_SUB), появятся различные опции, в этом выберите « Вставить» и под вставкой появятся три опции, где вам нужно выбрать « Модуль», будет создан пустой модуль., Вы можете переименовать его как «VBA_SUB» в окне раздела свойств

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 3. Начните с подпроцедуры следующим образом и создайте код VBA_SUB

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 4: Как только вы начнете вводить диапазон, его аргумент появится в скобках и щелкните по клавише табуляции, чтобы выбрать его. Как только вы оставите пробел и введете открытую скобку «(», появится аргумент CELLS, где вам нужно ввести синтаксис или аргумент для функции диапазона, то есть «E5»

Предположим, я хочу, чтобы SUBROUTINE появился в ячейке «E5». Для этого мне нужно набрать = «SUBROUTINE» после функции диапазона. и затем нажмите ввод.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 1: Начните с Sub, и теперь мы увидим, как мы можем вызвать функцию, используя MsgBox.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 2. Предположим, что при запуске вышеупомянутого кода в модуле VBA_SUB он сработает, но при попытке скопировать и запустить его в другом модуле, т.е. запустить этот код во вновь созданном модуле 1 листа 2 или 3, всплывающее сообщение не появится.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 1: Доступ к публичным подпроцедурам возможен из другого модуля, давайте посмотрим, как он работает.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Шаг 2: Когда я запускаю вышеупомянутый код (Public sub task_1 ) в модуле VBA_SUB, он возвращает значение или результат, то есть текстовую строку «PUBLIC SUBROUTINE» в ячейке «H7» sheet1

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Предположим, я хочу запустить этот же код во вновь созданном модуле, например, PUBLIC_SUB, тогда нет необходимости писать весь код в этом модуле, просто вы упоминаете имя макроса, то есть вызов task_1, вместо функции range во второй строке кода., вы получите тот же вывод или результат, то есть текстовую строку «ОБЩЕСТВЕННЫЙ ПОДРАТИН» в ячейке «Н7» листа2.

что такое sub в vba. Смотреть фото что такое sub в vba. Смотреть картинку что такое sub в vba. Картинка про что такое sub в vba. Фото что такое sub в vba

Сохраните вашу книгу как «Excel с поддержкой макросов». Когда вы снова откроете этот файл Excel, вы можете использовать нижеприведенную комбинацию клавиш, т.е.

То, что нужно запомнить

Рекомендуемые статьи

Источник

Sub Statement (Visual Basic)

Declares the name, parameters, and code that define a Sub procedure.

Syntax

Parts

Optional. Indicates definition of a partial method. See Partial Methods.

Optional. Can be one of the following:

Optional. Can be one of the following:

Required. Name of the procedure. See Declared Element Names. To create a constructor procedure for a class, set the name of a Sub procedure to the New keyword. For more information, see Object Lifetime: How Objects Are Created and Destroyed.

Optional. List of type parameters for a generic procedure. See Type List.

Optional. List of local variable names representing the parameters of this procedure. See Parameter List.

Optional. Indicates that this procedure implements one or more Sub procedures, each one defined in an interface implemented by this procedure’s containing class or structure. See Implements Statement.

Required if Implements is supplied. List of Sub procedures being implemented.

Each implementedprocedure has the following syntax and parts:

Optional. Indicates that this procedure can handle one or more specific events. See Handles.

Required if Handles is supplied. List of events this procedure handles.

Each eventspecifier has the following syntax and parts:

PartDescription
eventvariableRequired. Object variable declared with the data type of the class or structure that raises the event.
eventRequired. Name of the event this procedure handles.

Optional. Block of statements to run within this procedure.

Terminates the definition of this procedure.

Remarks

All executable code must be inside a procedure. Use a Sub procedure when you don’t want to return a value to the calling code. Use a Function procedure when you want to return a value.

Defining a Sub Procedure

You can define a Sub procedure only at the module level. The declaration context for a sub procedure must, therefore, be a class, a structure, a module, or an interface and can’t be a source file, a namespace, a procedure, or a block. For more information, see Declaration Contexts and Default Access Levels.

Sub procedures default to public access. You can adjust their access levels by using the access modifiers.

Returning from a Sub Procedure

When a Sub procedure returns to the calling code, execution continues with the statement after the statement that called it.

The following example shows a return from a Sub procedure.

The Exit Sub and Return statements cause an immediate exit from a Sub procedure. Any number of Exit Sub and Return statements can appear anywhere in the procedure, and you can mix Exit Sub and Return statements.

Calling a Sub Procedure

You call a Sub procedure by using the procedure name in a statement and then following that name with its argument list in parentheses. You can omit the parentheses only if you don’t supply any arguments. However, your code is more readable if you always include the parentheses.

A Sub procedure and a Function procedure can have parameters and perform a series of statements. However, a Function procedure returns a value, and a Sub procedure doesn’t. Therefore, you can’t use a Sub procedure in an expression.

You can use the Call keyword when you call a Sub procedure, but that keyword isn’t recommended for most uses. For more information, see Call Statement.

Visual Basic sometimes rearranges arithmetic expressions to increase internal efficiency. For that reason, if your argument list includes expressions that call other procedures, you shouldn’t assume that those expressions will be called in a particular order.

Async Sub Procedures

By using the Async feature, you can invoke asynchronous functions without using explicit callbacks or manually splitting your code across multiple functions or lambda expressions.

If you mark a procedure with the Async modifier, you can use the Await operator in the procedure. When control reaches an Await expression in the Async procedure, control returns to the caller, and progress in the procedure is suspended until the awaited task completes. When the task is complete, execution can resume in the procedure.

An Async procedure returns to the caller when either the first awaited object that’s not yet complete is encountered or the end of the Async procedure is reached, whichever occurs first.

Async Sub procedures are primarily used for event handlers, where a value can’t be returned. An Async Sub procedure can’t be awaited, and the caller of an Async Sub procedure can’t catch exceptions that the Sub procedure throws.

An Async procedure can’t declare any ByRef parameters.

Example 1

The following example uses the Sub statement to define the name, parameters, and code that form the body of a Sub procedure.

Example 2

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *