Функция енд в excel: Функция ЕНД() в EXCEL. Примеры и описание

Содержание

Создание и примеры пользовательской функции в Excel читать в пошаговом руководстве

Автор Дмитрий Якушев На чтение 31 мин. Просмотров 8.3k.

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

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

В этом руководстве я расскажу о создании и использовании пользовательских функций в VBA.

Что такое функциональная процедура в VBA?

Процедура Function — это код VBA, который выполняет вычисления и возвращает значение (или массив значений).

Используя процедуру Function, вы можете создать функцию, которую вы можете использовать на рабочем листе (как и любую обычную функцию Excel, такую ​​как SUM или VLOOKUP).

Когда вы создали процедуру Function с использованием VBA, вы можете использовать ее тремя способами:

  1. В качестве формулы на рабочем листе, где она может принимать аргументы в качестве входных данных и возвращать значение или массив значений.
  2. Как часть кода вашей подпрограммы VBA или другого кода функции.
  3. В условном форматировании

Хотя на рабочем листе уже имеется более 450 встроенных функций Excel, вам может потребоваться настраиваемая функция, если:

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

Обратите внимание, что пользовательские функции, созданные с использованием VBA, могут быть значительно медленнее, чем встроенные функции. Следовательно, они лучше всего подходят для ситуаций, когда вы не можете получить результат, используя встроенные функции.

Функция против Подпрограммы в VBA

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

Например, если у вас есть список чисел (как положительных, так и отрицательных), и вы хотите идентифицировать отрицательные числа, вот что вы можете сделать с помощью функции и подпрограммы.

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

С пользовательской функцией вы можете использовать ее в отдельном столбце, и она может возвратить TRUE, если значение в ячейке отрицательное, и FALSE, если оно положительное. С помощью функции вы не можете изменять свойства объекта. Это означает, что вы не можете изменить цвет ячейки с помощью самой функции (однако вы можете сделать это, используя условное форматирование с пользовательской функцией).

Когда вы создаете пользовательскую функцию (UDF) с использованием VBA, вы можете использовать эту функцию на листе, как и любую другую функцию. Я расскажу об этом подробнее в разделе «Различные способы использования пользовательских функций в Excel».

Создание простой пользовательской функции в VBA

Позвольте мне создать простую пользовательскую функцию в VBA и показать вам, как она работает.

Приведенный ниже код создает функцию, которая извлекает числовые части из буквенно-цифровой строки.

Function GetNumeric(CellRef As String) as Long
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1)
Next i
GetNumeric = Result
End Function

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

Ниже показано, как эту функцию — GetNumeric — можно использовать в Excel.

Теперь, прежде чем я расскажу вам, как эта функция создается в VBA и как она работает, вам нужно знать несколько вещей:

  • Когда вы создаете функцию в VBA, она становится доступной во всей книге, как и любая другая обычная функция.
  • Когда вы вводите имя функции, за которым следует знак равенства, Excel покажет вам имя функции в списке совпадающих функций. В приведенном выше примере, когда я ввел = Get, Excel показал мне список, в котором была моя пользовательская функция.

Я считаю, что это хороший пример, когда вы можете использовать VBA для создания простой в использовании функции в Excel. Вы можете сделать то же самое с формулой (как показано в этом руководстве), но это становится сложным и трудным для понимания. С этим UDF вам нужно передать только один аргумент, и вы получите результат.

Анатомия пользовательской функции в VBA

В приведенном выше разделе я дал вам код и показал, как функция UDF работает на рабочем листе.

Теперь давайте углубимся и посмотрим, как создается эта функция. Вы должны поместить приведенный ниже код в модуль в VB Editor. Я рассматриваю эту тему в разделе «Где разместить код VBA для пользовательской функции».

Function GetNumeric(CellRef As String) as Long
' Эта функция извлекает числовую часть из строки
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1)
Next i
GetNumeric = Result
End Function

Первая строка кода начинается со слова «Функция».

Это слово говорит VBA, что наш код является функцией (а не подпрограммой). За словом Function следует имя функции — GetNumeric. Это имя, которое мы будем использовать на листе, чтобы использовать эту функцию.

  • В имени функции не должно быть пробелов. Кроме того, вы не можете назвать функцию, если она конфликтует с именем ссылки на ячейку. Например, вы не можете назвать функцию ABC123, так как она также относится к ячейке на листе Excel.
  • Вы не должны давать своей функции то же имя, что и у существующей функции. Если вы сделаете это, Excel будет отдавать предпочтение встроенной функции.
  • Вы можете использовать подчеркивание, если хотите разделить слова. Например, Get_Numeric является допустимым именем

За именем функции следуют некоторые аргументы в скобках. Это аргументы, которые нужны нашей функции от пользователя. Это как аргументы, которые мы должны предоставить встроенным функциям Excel. Например, в функции COUNTIF есть два аргумента (диапазон и критерии).

В скобках необходимо указать аргументы.

В нашем примере есть только один аргумент — CellRef.

Также полезно указывать, какой аргумент ожидает функция. В этом примере, так как мы будем передавать функции ссылку на ячейку, мы можем указать аргумент как тип «Range». Если вы не укажете тип данных, VBA будет рассматривать его как вариант (что означает, что вы можете использовать любой тип данных).

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

Обратите внимание, что функция указана как тип данных «String». Это сообщит VBA, что результат формулы будет иметь тип данных String.

Здесь я могу использовать числовой тип данных (например, Long или Double), но это ограничит диапазон возвращаемых чисел. Если у меня есть строка длиной 20 номеров, которую мне нужно извлечь из общей строки, объявление функции как Long или Double приведет к ошибке (так как число будет вне диапазона). Поэтому я сохранил тип выходных данных функции как String.

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

Третья строка кода объявляет переменную StringLength как тип данных Integer. Это переменная, в которой мы храним значение длины строки, которая анализируется по формуле.

В четвертой строке переменная Result объявляется как тип данных String. Это переменная, в которой мы будем извлекать числа из буквенно-цифровой строки.

Пятая строка назначает длину строки во входном аргументе переменной «StringLength». Обратите внимание, что «CellRef» относится к аргументу, который будет предоставлен пользователем при использовании формулы в рабочей таблице (или при использовании ее в VBA — которую мы увидим позже в этом руководстве).

Шестая, седьмая и восьмая строки являются частью цикла For Next. Цикл выполняется столько раз, сколько символов во входном аргументе. Этот номер задается функцией LEN и присваивается переменной «StringLength».

Таким образом, цикл проходит от «1 до Stringlength».

Внутри цикла оператор IF анализирует каждый символ строки и, если он числовой, добавляет этот числовой символ в переменную Result. Для этого он использует функцию MID в VBA.

Вторая последняя строка кода присваивает значение результата функции. Именно эта строка кода гарантирует, что функция вернет значение «Result» обратно в ячейку (откуда она вызывается).

Последняя строка кода — End Function. Это обязательная строка кода, которая сообщает VBA, что код функции заканчивается здесь.

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

Аргументы в пользовательской функции в VBA

В приведенных выше примерах, где мы создали пользовательскую функцию для получения числовой части из буквенно-цифровой строки (GetNumeric), функция была разработана для получения одного аргумента.

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

Создание функции в VBA без каких-либо аргументов

В листе Excel у нас есть несколько функций, которые не принимают аргументов (например, RAND, TODAY, NOW).

Эти функции не зависят от входных аргументов. Например, функция TODAY возвращает текущую дату, а функция RAND возвращает случайное число в диапазоне от 0 до 1.

Вы можете создать такую же функцию в VBA.

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

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

Приведенный выше код определяет результат функции как тип данных String (в качестве результата мы хотим получить имя файла, которое является строкой).

Эта функция присваивает функции значение «ThisWorkbook.Name», которое возвращается, когда функция используется на рабочем листе.

Если файл был сохранен, он возвращает имя с расширением файла, в противном случае он просто дает имя.

Выше есть одна проблема, хотя.

Если имя файла изменится, оно не будет автоматически обновлено. Обычно функция обновляется при изменении входных аргументов. Но поскольку в этой функции нет аргументов, функция не пересчитывает (даже если вы измените имя книги, закройте ее, а затем снова откройте).

При желании вы можете форсировать пересчет с помощью сочетания клавиш — Control + Alt + F9.

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

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

Function WorkbookName() As String
Application.Volatile True
WorkbookName = ThisWorkbook.Name
End Function

Теперь, если вы измените имя книги, эта функция будет обновляться всякий раз, когда будут какие-либо изменения в таблице, или когда вы снова откроете эту книгу.

Создание функции в VBA с одним аргументом

В одном из разделов выше мы уже видели, как создать функцию, которая принимает только один аргумент (функция GetNumeric, описанная выше).

Давайте создадим еще одну простую функцию, которая принимает только один аргумент.

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

Function ConvertToUpperCase(CellRef As Range)
ConvertToUpperCase = UCase(CellRef)
End Function

Эта функция использует функцию UCase в VBA для изменения значения переменной CellRef. Затем он присваивает значение функции ConvertToUpperCase.

Поскольку эта функция принимает аргумент, нам не нужно использовать здесь часть Application.Volatile. Как только аргумент изменится, функция автоматически обновится.

Создание функции в VBA с несколькими аргументами

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

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

Function GetDataBeforeDelimiter(CellRef As Range, Delim As String) as String
Dim Result As String
Dim DelimPosition As Integer
DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1
Result = Left(CellRef, DelimPosition)
GetDataBeforeDelimiter = Result
End Function

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

Обратите внимание, что для каждого аргумента вы можете указать тип данных. В приведенном выше примере «CellRef» был объявлен как тип данных диапазона, а «Delim» был объявлен как тип данных String. Если вы не укажете какой-либо тип данных, VBA считает, что это вариант данных.

Когда вы используете вышеуказанную функцию на листе, вам нужно указать ссылку на ячейку, в которой в качестве первого аргумента указан текст, а в качестве двойного кавычка — символ (ы) в двойных кавычках.

Затем он проверяет положение разделителя с помощью функции INSTR в VBA. Эта позиция затем используется для извлечения всех символов перед разделителем (используя функцию LEFT).

Наконец, он присваивает результат функции.

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

Function GetDataBeforeDelimiter(CellRef As Range, Delim As String) as String
Dim Result As String
Dim DelimPosition As Integer
DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1
If DelimPosition < 0 Then DelimPosition = Len(CellRef)
Result = Left(CellRef, DelimPosition)
GetDataBeforeDelimiter = Result
End Function

Мы можем дополнительно оптимизировать эту функцию.

Если вы введете текст (из которого вы хотите извлечь часть перед разделителем) непосредственно в функции, это приведет к ошибке. Давай .. попробуй!

Это происходит, когда мы указали «CellRef» в качестве типа данных диапазона.

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

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

Код ниже сделает это:

Function GetDataBeforeDelimiter(CellRef, Delim) As String
Dim Result As String
Dim DelimPosition As Integer
DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1
If DelimPosition < 0 Then DelimPosition = Len(CellRef)
Result = Left(CellRef, DelimPosition)
GetDataBeforeDelimiter = Result
End Function

Создание функции в VBA с необязательными аргументами

В Excel есть много функций, некоторые из которых не являются обязательными.

Например, легендарная функция VLOOKUP имеет 3 обязательных аргумента и один необязательный аргумент.

Необязательный аргумент, как следует из названия, указывать необязательно. Если вы не укажете один из обязательных аргументов, ваша функция выдаст вам ошибку, но если вы не укажете необязательный аргумент, ваша функция будет работать.

Но необязательные аргументы не бесполезны. Они позволяют вам выбирать из целого ряда вариантов.

Например, в функции VLOOKUP, если вы не указали четвертый аргумент, VLOOKUP выполняет приблизительный поиск, а если вы указываете последний аргумент как FALSE (или 0), то он выполняет точное совпадение.

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

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

Функция только с необязательным аргументом

Насколько я знаю, нет встроенной функции, которая принимает только необязательные аргументы (я могу ошибаться, но я не могу думать ни о какой такой функции).

Но мы можем создать один с VBA.

Ниже приведен код функции, которая выдаст вам текущую дату в формате dd-mm-yyyy, если вы не вводите никаких аргументов (т.е. оставьте это поле пустым), и в формате «dd mmmm, yyyy», если вы введете что-либо в качестве аргумента (т. е. что угодно, чтобы аргумент не был пустым).

Function CurrDate(Optional fmt As Variant)
Dim Result
If IsMissing(fmt) Then
CurrDate = Format(Date, "dd-mm-yyyy")
Else
CurrDate = Format(Date, "dd mmmm, yyyy")
End If
End Function

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

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

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

Function CurrDate(Optional fmt As Variant)
Dim Result
If IsMissing(fmt) Then
CurrDate = Format(Date, "dd-mm-yyyy")
ElseIf fmt = 1 Then
CurrDate = Format(Date, "dd mmmm, yyyy")
Else
CurrDate = CVErr(xlErrValue)
End If
End Function

Приведенный выше код создает функцию, которая показывает дату в формате «дд-мм-гггг», если аргумент не указан, и в формате «дд мммм, гггг», если аргумент равен 1. Во всех других случаях выдается ошибка.

Функция с необходимыми и необязательными аргументами

Мы уже видели код, который извлекает числовую часть из строки.

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

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

Function GetText(CellRef As Range, Optional TextCase = False) As String
Dim StringLength As Integer
Dim Result As String
StringLength = Len(CellRef)
For i = 1 To StringLength
If Not (IsNumeric(Mid(CellRef, i, 1))) Then Result = Result &amp; Mid(CellRef, i, 1)
Next i
If TextCase = True Then Result = UCase(Result)
GetText = Result
End Function

Обратите внимание, что в приведенном выше коде мы инициализировали значение «TextCase» как False (смотрите в скобках в первой строке).

Сделав это, мы убедились, что необязательный аргумент начинается со значения по умолчанию, то есть FALSE. Если пользователь указывает значение как ИСТИНА, функция возвращает текст в верхнем регистре, а если пользователь указывает необязательный аргумент как ЛОЖЬ или пропускает его, то возвращаемый текст остается как есть.

Создание функции в VBA с массивом в качестве аргумента

До сих пор мы видели примеры создания функции с необязательными / обязательными аргументами, где эти аргументы были одним значением.

Вы также можете создать функцию, которая может принимать массив в качестве аргумента. В функциях листа Excel есть много функций, которые принимают аргументы массива, такие как SUM, VLOOKUP, SUMIF, COUNTIF и т.д.

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

Function AddEven(CellRef as Range)
 Dim Cell As Range
 For Each Cell In CellRef
 If IsNumeric(Cell. Value) Then
 If Cell.Value Mod 2 = 0 Then
 Result = Result + Cell.Value
 End If
 End If
 Next Cell
 AddEven = Result
 End Function

Вы можете использовать эту функцию на листе и указать диапазон ячеек, в которых в качестве аргумента используются числа. Функция будет возвращать одно значение — сумму всех четных чисел (как показано ниже).

В приведенной выше функции вместо одного значения мы предоставили массив (A1: A10). Чтобы это работало, вам нужно убедиться, что ваш тип данных аргумента может принимать массив.

В приведенном выше коде я указал аргумент CellRef как Range (который может принимать массив в качестве входных данных). Вы также можете использовать вариантный тип данных здесь.

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

В конце все четные числа добавляются, и сумма возвращается обратно в функцию.

Создание функции с неопределенным числом аргументов

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

Примером такой функции рабочего листа является функция SUM. Вы можете предоставить несколько аргументов (например, это):

= SUM (A1, A2: A4, B1: B20)

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

Вы можете создать такую ​​функцию в VBA, указав последний аргумент (или единственный аргумент) в качестве необязательного. Кроме того, этому необязательному аргументу должно предшествовать ключевое слово «ParamArray».

ParamArray — это модификатор, который позволяет вам принимать столько аргументов, сколько вы хотите. Обратите внимание, что использование слова ParamArray перед аргументом делает аргумент необязательным. Однако вам не нужно использовать здесь слово «Необязательно».

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

Function AddArguments(ParamArray arglist() As Variant)
For Each arg In arglist
AddArguments = AddArguments + arg
Next arg
End Function

Вышеприведенная функция может принимать любое количество аргументов и добавлять эти аргументы для получения результата.

Обратите внимание, что в качестве аргумента вы можете использовать только одно значение, ссылку на ячейку, логическое значение или выражение. Вы не можете предоставить массив в качестве аргумента. Например, если один из ваших аргументов — D8: D10, эта формула выдаст вам ошибку.

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

Function AddArguments(ParamArray arglist() As Variant)
For Each arg In arglist
For Each Cell In arg
AddArguments = AddArguments + Cell
Next Cell
Next arg
End Function

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

Цель здесь — показать вам, как работает ParamArray, чтобы вы могли разрешить неопределенное количество аргументов в функции. Если вам нужна функция лучше, чем та, которая была создана в приведенном выше коде, используйте функцию SUM на листе.

Создание функции, которая возвращает массив

До сих пор мы видели функции, которые возвращают одно значение.

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

Формулы массивов также доступны в виде встроенных функций на листах Excel. Если вы знакомы с формулами массива в Excel, вы знаете, что они вводятся клавишами Control + Shift + Enter (а не только Enter). Вы можете прочитать больше о формулах массива здесь. Если вы не знаете формул массива, не беспокойтесь, продолжайте читать.

Давайте создадим формулу, которая возвращает массив из трех чисел (1,2,3).

Код ниже сделает это.

Function ThreeNumbers() As Variant
Dim NumberValue(1 To 3)
NumberValue(1) = 1
NumberValue(2) = 2
NumberValue(3) = 3
ThreeNumbers = NumberValue
End Function

В приведенном выше коде мы указали функцию ThreeNumbers в качестве варианта. Это позволяет ему содержать массив значений.

Переменная NumberValue объявлена как массив из 3 элементов. Он содержит три значения и присваивает его функции «Три числа».

Вы можете использовать эту функцию на рабочем листе. Введите эту функцию и нажмите клавиши Control + Shift + Enter (удерживайте клавиши Control и Shift и затем нажмите Enter).

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

= MAX (ThreeNumbers ())

Используйте вышеуказанную функцию с Control + Shift + Enter. Вы заметите, что теперь результат равен 3, так как это самые большие значения в массиве, возвращаемом функцией Max, которая получает три числа в результате нашей пользовательской функции — ThreeNumbers.

Вы можете использовать ту же технику для создания функции, которая возвращает массив названий месяцев, как показано в приведенном ниже коде:

Function Months() As Variant
Dim MonthName(1 To 12)
MonthName(1) = "Январь"
MonthName(2) = "Февраль"
MonthName(3) = "Март"
MonthName(4) = "Апрель"
MonthName(5) = "Май"
MonthName(6) = "Июнь"
MonthName(7) = "Июль"
MonthName(8) = "Август"
MonthName(9) = "Сентябрь"
MonthName(10) = "Октябрь"
MonthName(11) = "Ноябрь"
MonthName(12) = "Декабрь"
Months = MonthName
End Function

Теперь, когда вы введете функцию = Months () на листе Excel и используете Control + Shift + Enter, она вернет весь массив названий месяцев. Обратите внимание, что вы видите только январь в ячейке, поскольку это первое значение в массиве. Это не означает, что массив возвращает только одно значение.

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

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

=INDEX(Months(),ROW())

Теперь, если у вас много значений, не рекомендуется назначать эти значения одно за другим (как мы делали выше). Вместо этого вы можете использовать функцию Array в VBA.

Поэтому тот же код, в котором мы создаем функцию «Месяцы», станет короче, как показано ниже:

Function Months() As Variant
Months = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", _
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
End Function

Вышеупомянутая функция использует функцию Array для назначения значений непосредственно этой функции.

Обратите внимание, что все функции, созданные выше, возвращают горизонтальный массив значений. Это означает, что если вы выберете 12 горизонтальных ячеек (скажем, A1: L1) и введете формулу = Months () в ячейку A1, вы получите все названия месяцев.

Но что, если вы хотите эти значения в вертикальном диапазоне ячеек.

Вы можете сделать это, используя формулу TRANSPOSE на листе.

Просто выберите 12 вертикальных ячеек (смежные) и введите приведенную ниже формулу.

Понимание объема пользовательской функции в Excel

Функция может иметь две области действия — Public или Private.

  • Общая область означает, что функция доступна для всех листов в рабочей книге, а также для всех процедур (вспомогательных и функциональных) во всех модулях в рабочей книге. Это полезно, когда вы хотите вызвать функцию из подпрограммы (мы увидим, как это делается в следующем разделе).
  • Частная область означает, что функция доступна только в том модуле, в котором она существует. Вы не можете использовать его в других модулях. Вы также не увидите его в списке функций на рабочем листе. Например, если имя вашей функции — «Месяцы ()», и вы вводите функцию в Excel (после знака =), она не будет отображать вам имя функции. Однако вы все равно можете использовать его, если вводите название формулы

Если вы ничего не указали, функция по умолчанию является публичной.

Ниже приведена функция, которая является частной функцией:

Private Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

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

Приведенный ниже код сделает эту функцию публичной. Это также будет отображаться на листе.

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function

Различные способы использования пользовательской функции в Excel

Создав пользовательскую функцию в VBA, вы можете использовать ее по-разному.

Давайте сначала рассмотрим, как использовать функции на листе.

Использование пользовательских функций в рабочих листах

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

Все, что вам нужно сделать, это ввести имя функции, и оно отобразится в intellisense.

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

Вы также можете использовать диалоговое окно «Вставить функцию» для вставки пользовательской функции (используя шаги ниже). Это будет работать только для публичных функций.

  • Перейдите на вкладку «Данные».
  • Нажмите «Вставить функцию».
  • В диалоговом окне «Вставка функции» выберите «Определено пользователем» в качестве категории. Эта опция отображается только тогда, когда у вас есть функция в редакторе VB (и функция Public).
  • Выберите функцию из списка всех общедоступных пользовательских функций.
  • Нажмите кнопку ОК

Вышеуказанные шаги вставят функцию в лист. Он также отображает диалоговое окно «Аргументы функции», которое предоставит вам подробную информацию об аргументах и результате.

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

=UPPER(WorkbookName())

Использование пользовательских функций в процедурах и функциях VBA

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

Если функция Public, она может использоваться в любой процедуре в том же или другом модуле. Если это Private, его можно использовать только в том же модуле.

Ниже приведена функция, которая возвращает имя рабочей книги.

Function WorkbookName() As String 
WorkbookName = ThisWorkbook.Name 
End Function

Приведенная ниже процедура вызывает функцию, а затем отображает имя в окне сообщения.

Sub ShowWorkbookName()
MsgBox WorkbookName
End Sub

Вы также можете вызвать функцию из другой функции.

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

Function WorkbookName() As String
WorkbookName = ThisWorkbook.Name
End Function
Function WorkbookNameinUpper()
WorkbookNameinUpper = UCase(WorkbookName)
End Function

Вызов пользовательской функции из других книг

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

Есть несколько способов сделать это:

  1. Создание надстройки
  2. Функция сохранения в персональной макрокоманде
  3. Ссылка на функцию из другой рабочей книги.

Создание надстройки

Создав и установив надстройку, вы получите настраиваемую функцию, доступную во всех книгах.

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

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

  • Перейдите на вкладку «Файл» и нажмите «Сохранить как».
  • В диалоговом окне «Сохранить как» измените тип «Сохранить как» на .xlam. Имя, которое вы назначаете файлу, будет именем вашей надстройки. В этом примере файл сохраняется с именем GetNumeric.
    • Вы заметите, что путь к файлу, в котором он сохраняется, автоматически изменяется. Вы можете использовать по умолчанию или изменить его, если хотите.
  • Откройте новую книгу Excel и перейдите на вкладку Разработчик.
  • Выберите параметр «Надстройки Excel».
  • В диалоговом окне «Надстройки» найдите и найдите сохраненный файл и нажмите «ОК».

Теперь надстройка была активирована.

Теперь вы можете использовать пользовательские функции во всех книгах.

Сохранение функции в персональной книге макросов

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

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

По умолчанию в вашем Excel нет личной книги макросов. Вам необходимо создать его, записав макрос и сохранив его в личной книге макросов.

Ссылка на функцию из другой книги

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

Предположим, у вас есть рабочая книга с именем «Рабочая тетрадь с формулой», и она имеет функцию с именем «GetNumeric».

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

=’Workbook with Formula’!GetNumeric(A1)

Приведенная выше формула будет использовать пользовательскую функцию в файле Workbook with Formula и даст вам результат.

Обратите внимание: поскольку в имени книги есть пробелы, его необходимо заключить в одинарные кавычки.

Использование оператора выхода из VBA

Если вы хотите выйти из функции во время выполнения кода, вы можете сделать это с помощью оператора «Выход из функции».

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

Function GetNumericFirstThree(CellRef As Range) As Long
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If J = 3 Then Exit Function
If IsNumeric(Mid(CellRef, i, 1)) Then
J = J + 1
Result = Result &amp; Mid(CellRef, i, 1)
GetNumericFirstThree = Result
End If
Next i
End Function

Вышеприведенная функция проверяет количество числовых символов, и когда она получает 3 числовых символа, она выходит из функции в следующем цикле.

Отладка пользовательской функции

Есть несколько методов, которые вы можете использовать при отладке пользовательской функции в VBA:

Отладка пользовательской функции с помощью окна сообщения

Используйте функцию MsgBox, чтобы показать окно сообщения с определенным значением.

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

Отладка пользовательской функции путем установки точки останова

Установите точку останова, чтобы иметь возможность проходить шаг за шагом по каждой строке. Чтобы установить точку останова, выберите нужную строку и нажмите F9 или нажмите на серую вертикальную область, которая слева от строк кода. Любой из этих методов вставил бы точку останова (вы увидите красную точку в серой области).

Как только вы установили точку останова и выполнили функцию, она идет до линии точки останова и затем останавливается. Теперь вы можете просмотреть код с помощью клавиши F8. Нажмите F8 один раз, чтобы перейти к следующей строке в коде.

Отладка пользовательской функции с помощью Debug. Print в коде

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

Например, в приведенном ниже коде я использовал Debug.Print, чтобы получить значение двух переменных — «j» и «Result».

Function GetNumericFirstThree(CellRef As Range) As Long
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If J = 3 Then Exit Function
If IsNumeric(Mid(CellRef, i, 1)) Then
 J = J + 1
 Result = Result &amp; Mid(CellRef, i, 1)
 Debug.Print J, Result
 GetNumericFirstThree = Result
End If
Next i
End Function

Когда этот код выполняется, он показывает следующее в immediate window.

Встроенные функции Excel против Пользовательской функции VBA

Есть несколько сильных преимуществ использования встроенных функций Excel по сравнению с пользовательскими функциями, созданными в VBA.

  • Встроенные функции работают намного быстрее, чем функции VBA.
  • Когда вы создаете отчет / панель мониторинга с использованием функций VBA и отправляете его клиенту / коллеге, им не нужно беспокоиться о том, включены макросы или нет. В некоторых случаях клиенты / клиенты пугаются, увидев предупреждение в желтой полосе (которое просто просит их включить макросы).
  • Благодаря встроенным функциям Excel вам не нужно беспокоиться о расширениях файлов. Если у вас есть макросы или пользовательские функции в рабочей книге, вам нужно сохранить их в формате .xlsm

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

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

Где разместить код VBA для пользовательской функции

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

Ниже приведены инструкции по размещению кода для функции «GetNumeric» в книге.

  1. Перейдите на вкладку Разработчик.
  2. Нажмите на Visual Basic. Это откроет редактор VB в бэкэнде.
  3. На панели Project Explorer в редакторе VB щелкните правой кнопкой мыши любой объект для книги, в которую вы хотите вставить код. Если вы не видите Project Explorer, перейдите на вкладку View и щелкните Project Explorer.
  4. Перейти к Вставить и нажмите на модуль. Это вставит объект модуля для вашей книги.                 
  5. Скопируйте и вставьте код в окно модуля. 

Excel введите формулу в ячейку

Function bd()

    Sheets("sheet1").Range("A1").value=1

End Function

Это моя функция.
Почему, когда я ввожу =bd() в любую ячейку листа 1, Данные в A1 не изменяются на 1? Я не хочу использовать кнопку для изменения значения.

excel

vba

Поделиться

Источник


Jack.    

14 февраля 2014 в 04:27

2 ответа


  • Как добавить формулу суммы в ячейку в Excel

    Я разрабатываю приложение exe с использованием языка C#. Я хотел бы написать формулу суммы в ячейку под названием Total, чтобы пользователь мог ввести дополнительную информацию в excel, генерируемую системой, и она автоматически отражается в ячейке под названием total. Ниже приведен формат файла…

  • Вставьте расширенную формулу в ячейку

    Используя Excel 2016, я изо всех сил пытаюсь вставить формулу в ячейку с VBA (где VBA выполняет импорт данных). У меня есть два листа: Rapport SNN и Data . Sheets(Rapport SNN).[E4].Formula = =SUMIFS(Data!S2:Data!S2000;Data!V2:Data!V2000;BankAxept;Data!M2:Data!M2000;C4)/100 Просто бросает мне:…



0

Почему это не работает:

Если вы вызываете свою функцию из формулы Excel, ваша функция становится User-Defined-Function (=UDF).

UDF должен следовать специальным правилам — главным из которых является то, что он никоим образом не может ничего изменить в Excel — он должен только возвращать значение! Ваша функция явно нарушает эти правила.

(Для справки: другое основное ограничение заключается в том, что он также не должен получать доступ к каким-либо данным вне параметров, которые были переданы ему при вызове функции. Таким образом, вы не можете использовать MyUDF=Range("A1").Value — но только что-то вроде MyUDF=rngParam1.Value*2 !

Альтернативный подход:

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

Например, вы можете использовать Activate листа 1. Для этого поместите этот код в модуль кода Sheet1:

Private Sub Worksheet_Activate()
    Range("A1").Value = 1
End Sub

Теперь каждый раз, когда лист1 активируется, А1 будет сброшен!

Поделиться


Peter Albert    

14 февраля 2014 в 07:11



0

попробовать это

Скопируйте этот код на свой ‘Thisworkbook’ на vba

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Range("A1").Value = "bd()" Then
Sheets("sheet1").Range("A1").Value = 1
End If
End Sub

Теперь, если вы введете ‘bd()’ (без кавычек) в ячейку A1 на любом листе и нажмете enter, ячейка A1 листа one изменится на 1

OR

Скопируйте этот код на свой ‘Thisworkbook’ на vba

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sheets("sheet1").Range("A1").Value = "bd()" Then
Sheets("sheet1").Range("A1").Value = 1
End If
End Sub

Теперь, если вы введете ‘bd()’ (без кавычек) в ячейку A1 на первом листе и нажмете enter, ячейка A1 первого листа автоматически изменится на 1

Надеюсь, это сработает

Поделиться


Hussain Nasif    

14 февраля 2014 в 09:38


Похожие вопросы:

Excel-Функция Условной Даты

Используя Excel, я хотел бы создать условную формулу даты следующим образом: Если дата больше или равна 18 января 2013 года, введите в эту ячейку $220.00. Возможно ли это сделать? Спасибо

Как добавить формулу в Excel

Мой вопрос в том, как я могу поместить эту формулу в ячейку, используя PowerShell: =(‘&B6&’,’&TEXT(C6,mm-dd-yyyy…

Как ввести формулу в ячейку с помощью VBA?

Я пытаюсь ввести формулу в ячейку, в которой содержится переменная, называют var1a? Код, который у меня есть, таков: Worksheets(EmployeeCosts).Range(B & var1a).Formula = SUM(H5:H& var1a) Но…

Как добавить формулу суммы в ячейку в Excel

Я разрабатываю приложение exe с использованием языка C#. Я хотел бы написать формулу суммы в ячейку под названием Total, чтобы пользователь мог ввести дополнительную информацию в excel, генерируемую…

Вставьте расширенную формулу в ячейку

Используя Excel 2016, я изо всех сил пытаюсь вставить формулу в ячейку с VBA (где VBA выполняет импорт данных). У меня есть два листа: Rapport SNN и Data . Sheets(Rapport SNN).[E4].Formula =…

Как поместить формулу в ячейку по Excel VBA?

Я пытаюсь поместить этот =IF(D49>0,D49-D50-D51+D52+D53,) в ячейку D54 с помощью макроса. Мой код выглядит следующим образом Range(D54).FormulaR1C1 = =IF(D52>0,D49-D50-D51+D52+D53,) Но когда я…

Запустите формулу excel через VBA

Я пытаюсь VLOOKUP какое-то значение в 2 листах, и если это значение найдено, то я помещаю гиперссылку на ячейку листа 1, чтобы указать ее на ячейку листа 2. Я написал формулу Excel для того же…

VBA Excel как написать формулу Excel в textbox

Как я могу поместить формулу Excel в формулу textbox? Я попробовал СТХ вот так: Sub CivBox() With ActiveSheet .Shapes(Civils 3).Copy [C26].Activate .Paste .Shapes(.Shapes.Count).Name = Civils 4…

Excel вернуть формулу из ячейки

Нужна помощь в создании функции, которая возвращает уравнение ячейки без знака равенства. Это можно сделать в скриптах google sheets, Excel, VBA или Google App. Пример ниже Вместо того чтобы вводить…

Как ввести формулу в пустую ячейку, если другая ячейка не пуста в excel

Я просмотрел stackoverflow и нашел несколько тем, очень похожих на мои, но ответы не являются конкретными и обычно представляют собой просто код vba без какого-либо объяснения того, как он работает….

Создаем свою первую функцию в Excel

Что такое функция в VBA?

Функция написанная на VBA — это код, который выполняет вычисления и возвращает значение (или массив значений). Создав функцию вы можете использовать ее тремя способами:

  1. В качестве формулы на листе, где она может принимать аргументы и возвращать значения.
  2. Как часть вашей подпрограммы VBA. В процедуре Sub или внутри других функций.
  3. В правилах условного форматирования.

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

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

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

В чем отличие процедуры (Sub) от функции (Function)?

Основное отличие в том, что процедура (sub) используется для выполнения набора команд, и не призвана в отличие от функции (function) возвращать  значение (или массив значений).

Для демонстрации приведем пример. Например есть ряд чисел от 1 до 100 и необходимо отделить четные от нечетных.

С помощью процедуры (sub) вы можете, к примеру, пройтись по ячейкам и выделить нечетные с помощью заливки. А функцию можно использовать в соседнем столбце и она вернет ИСТИНА или ЛОЖЬ в зависимости от того четное значение или нет. Т.е. вы не сможете изменить цвет заливки с помощью функции на листе.   

Создание простой пользовательской функции в VBA

Давайте создадим простую пользовательскую функцию на VBA и посмотрим как там все работает.

Ниже представлен код функции, которая из текста оставляет только цифры, отбрасывая буквенные значения.


Function Цифры(Текст As String) As Long
    Dim i As Long
    Dim result As String
    
    For i = 1 To Len(Текст)
        If IsNumeric(Mid(Текст, i, 1)) Then result = result & Mid(Текст, i, 1)
    Next
    
    Цифры = CLng(result)
End Function

Чтобы у вас все заработало, необходимо вставить данный код в модуль книги. Если вы не знаете как это сделать, то начните со статьи Как записать макрос в Excel.

Теперь посмотрим как функция работает, попробуем использовать ее на листе:

Прежде чем разбирать саму функцию отметим 2 приятных момента, которые появились после создания:

  • Она стала доступна, как и любая другая встроенная функция (как создать скрытую функцию, расскажем далее).
  • Когда вы ввели знак «=» и начинаете вводить имя функции, то Excel выводит все совпадения и показывает не только встроенные функции, но и пользовательские.

Разбираем функцию пошагово

Теперь давайте глубоко погрузимся и посмотрим, как эта функция создавалась. Начинается функция со строки


Function Цифры(Текст As String) As Long

Слово Function говорит о начале функции, далее идет ее название, в нашем случае Цифры.

  • Имя функции не может содержать пробелов. Кроме того, вы не можете назвать функцию, если она сталкивается с именем ссылки на ячейку. Например, вы не можете назвать функцию ABC123, так как это имя также относится к ячейке в листе Excel.
  • Вы не должны указывать на свою функцию то же имя, что и у существующей функции. Если вы это сделаете, Excel будет отдавать предпочтение встроенной функции.
  • Вы можете использовать символ подчеркивания, если хотите разделить слова. Например, Сумма_Прописью является допустимым именем.

После названия в круглых скобках  описываются аргументы функции. По аналогии со встроенными функциями Excel. В нашем случае используется единственный аргумент Текст. После названия аргумента мы указали As String, это означает, что наш аргумент — текстовое значение или ссылка на ячейку, содержащее текстовое значение. Если вы не укажете тип данных, VBA рассмотрит его как Variant (что означает, что вы можете использовать любой тип данных, VBA его определит самостоятельно).

Последняя часть первой строки As Long задает тип данных, которая возвращает функция. В нашем случае функция будет возвращать целые значения. Это также не обязательно.

Вторая и третья строка функции объявляет дополнительные внутренние переменные, которые мы будем использовать.


Dim i As Long
Dim result As String

Переменную i мы буем использовать для перебора символов. А переменную result для хранения промежуточного результата функции.

Задача функции — пройти по всем символам переменной Текст и сохранить только те, что являются цифрами. Поэтому начнем цикл с 1 и до последнего символа.


For i = 1 To Len(Текст)

Len — функция, которая определяет количество символов.

Основная строка функции — это проверка является ли очередной символ текста цифрой и если да — то сохранение его в переменной result


If IsNumeric(Mid(Текст, i, 1)) Then result = result & Mid(Текст, i, 1)

Для этого нам потребуется функция IsNumeric — она возвращает True если текст — число и False в противном случае.

Функция Mid берет из аргумента Текст i-ый символ (значение 1, указывает что функция Mid берет только 1 символ)/

Функция Next — закрывает цикл For тут все понятно.


Цифры = CLng(result)

Этой строкой мы преобразовываем текстовую переменную result, которая содержит все цифры аргумента Текст, в числовое значение. И говорим какой результат должна вывести наша функция Цифры.

Последняя строка кода — End Function. Это обязательная строка кода, которая сообщает VBA, что код функции заканчивается здесь.

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

Скачать

Оператор ветвления If…Then…Else…End if — Операторы ветвления — Программирование на VBA — Статьи об Excel

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

Оператор If…Then…Else…End if имеет следующий синтаксис:
If условие Then 1й_оператор Else 2й_оператор

1й_оператор выполняется в том случае, когда заданное условие является истиной, если же условие не равняется истине – тогда выполняется 2й_оператор.

Условный оператор If можно использовать в трёх видах:

1. If условие Then оператор

Пример №1:

Sub example1()
 If 100 = 100 Then MsgBox True
End Sub

В примере №1 приведена краткая форма записи, что означает: если(if) 100 = 100(условие) тогда(then) Msgbox True(оператор)

2. If условие Then 1й_оператор Else 2й_оператор End If

Пример №2:

 

Sub example2()
 If 100 < 10 Then
 MsgBox True
 Else
 MsgBox False
 End If
End Sub

В примере №2 приведена полная форма записи с двумя операторами, что означает: если(if) 100 < 10(условие) тогда(then) Msgbox True(1й_оператор) иначе(else) Msgbox False(2й_оператор) конец(end if)

3. If 1е_условие Then 1й_оператор ElseIf 2е_условие Then 2й_оператор End If

Пример №3:

Sub example3()
 If 100 = 120 Then
 MsgBox 120
 ElseIf 100 = 100 Then
 MsgBox 100
 End If
End Sub

В примере №3 приведена самая гибкая форма условного оператора If (структура с двумя операторами и двумя условиями), что означает: если(if) 100 = 120(1е_условие) тогда(then) Msgbox 120(1й_оператор) иначе если(ElseIf) 100 = 100(2е_условие) тогда(then) Msgbox 100(2й_оператор)

Как переопределить используемую область листа в Excel — Трюки и приемы в Microsoft Excel

При нажатии Ctrl+End Excel активизирует нижнюю правую ячейку используемой области листа. Случается, что программа делает текущей не реально последнюю ячейку с информацией, а пустую нижнюю правую ячейку листа.

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

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

Предположим, что реально последней ячейкой в книге является ячейка G25, но нажатие Ctrl+End приводит вас не к ней, а к М50. Для удаления отформатированных ячеек выполните следующие действия.

  1. Выберите все столбцы справа от столбца G. Для этого активизируйте любую ячейку в столбце Н, нажмите Ctrl+Пробел, затем Shift+End и в конце, удерживая нажатой Shift, нажмите клавишу .
  2. Выполните команду Главная → Ячейки → Удалить → Удалить столбцы с листа (или щелкните правой кнопкой мыши на заголовке любого столбца и выберите команду Удалить).
  3. Выделите все строки ниже строки 25. Для этого активизируйте любую ячейку в строке 26. Нажмите Shift+Пробел, затем Shift+End и в конце, удерживая нажатой Shift, нажмите клавишу .
  4. Выполните команду Главная → Ячейки → Удалит → Удалить строки с листа(или щелкните правой кнопкой мыши на заголовке любой строки и выберите команду Удалить).
  5. Сохраните книгу, и Excel переопределит последнюю ячейку.

После выполнения этих шагов нажатие клавиш Ctrl+End приведет вас к реальной последней ячейке.

Кстати, если вы не можете вспомнить сочетание клавиш Ctrl+End, используйте диалоговое окно Выделение группы ячеек. Выберите Главная → Найти и выделить → Выделение группы ячеек и в появившемся окне установите переключатель в положение последнюю ячейку. Нажмите ОК.

Горячие клавиши Excel

При работе с Excel используйте сочетания клавиш вместо мыши. Используя сочетания клавиш можно открывать, закрывать документы и листы, перемещаться по документу, выполнять различные действия над ячейками, выполнять вычисления и т.д. Использование сочетаний клавиш облегчит и ускорит работу с программой.

Ctrl+N – Создание нового документа

Ctrl+S, Shift+F12 – Сохранение документа

F12 – Сохранение документа под другим именем (в другом каталоге)

Ctrl+O, Ctrl+F12 – Открытие документа

Ctrl+F4, Ctrl+W – Закрытие документа

Alt+F4 – Закрытие Excel

Ctrl+F6, Ctrl+Shitt+F6, Ctrl+Tab, Ctrl+Shift+Tab – Переход между окнами документов

Alt+Tab – Переключение окон документов (если переключатель окна на панели задач включен)

Ctrl+F10 – Перевод всех окон документов из нормального состояния в развернутое, и обратно

Ctrl+F5 – Перевод всех окон документов в нормальный вид

F6, Shift+F6 – Переход между частями таблицы после разбивки

Shift+F10 – Вызов контекстного меню объекта

F7 – Проверка орфографии

Ctrl+P, Ctrl+Shift+F12 – Печать документа

Shift+F11 ,Alt+Shitt+F1 – Создание листа таблицы

F11, Alt+F1 – Создание листа диаграммы

Ctrl+Page Down – Следующий лист

Ctrl+Page Up – Предыдущий лист

Ctrl+Shift+Page Down – Выделение следующего листа

Ctrl+Shift+Page Up – Выделение предыдущего листа

Alt+Enter – Ввод текста в несколько строк

Ctrl+Enter – Ввод одинаковых данных в ячейки выделенного блока

Ctrl+R (Ctrl+D) – Ввод одинаковых данных в ячейки справа (снизу)

Ctrl+; – Вставка текущей даты

Ctrl+Shift+; – Вставка текущего времени

Shitt+F3 – Вызов мастера функций

Ctrl+Sbitt+A – Вызов мастера функций после набора имени функции

Ctrl+A – Ввод имен аргументов функции после набора имени функции

Alt+= – Автосуммирование

Ctrl+Z, Alt+Back Space – Отмена последней операции

F4, Ctrl+Y – Возвращение отмененного действия (или повтор последнего действия)

F4 (при редактировании) – Смена относительных/абсолютных адресов

Ctrl+1 – Вызов диалогового окна Формат ячеек

Ctrl+B, Ctrl+2 – Шрифт полужирный

Ctrl+I, Ctrl+3 – Шрифт курсив

Ctrl+U, Ctrl+4 – Шрифт подчеркнутый

Ctrl+5 – Шрифт перечеркнутый

Ctrl+Shift+P – Активизация инструмента Размер

Ctrl+Shift+F – Активизация инструмента Шрифт

Ctrl+Shift+- – Формат Обычный (по умолчанию)

Ctrl+Shift+1 – Формат числа 0.00 с разделителем групп разрядов

Ctrl+Shift+2 – Формат времени ч.мм

Ctrl+Shift+3 – Формат даты ДД.МММ.ГГ

Ctrl+Shift+4 – Формат числа Денежный

Ctrl+Shift+5 – Формат числа Процентный

Ctrl+Shift+6 – Формат числа О.ООЕ+00

Ctrl+Shift+7 – Обрамление внешнего контура тонкой сплошной линией

Ctrl+Shift+- – Отмена обрамления всех линий

Alt+’ – Вызов окна Стиль

Shift+Space – Выделение строки

Ctrl+Space – Выделение столбца

Ctrl+A – Выделение всей таблицы

Ctrl+Shift+8, Ctrl+* (цифр.клав.) – Выделение области заполненных ячеек

Shift+клавиши перемещения, F8 и клавиши перемещения – Выделение одиночного блока

Shift+F8 & F8 и клавиши перемещения – Выделение кусочного блока

Ctrl+C, Ctrl+lnsert – Копирование в буфер обмена

Ctrl+X, Shitt+Delete – Вырезание в буфер обмена

Ctrl+V, Shift+lnsert – Вставка из буфера обмена

Ctrl+- – Удаление ячеек

Ctrl+Shift+= – Вставка новых ячеек

Ctrl+9, Ctrl+Shift+9 – Скрытие (показ) строк

Ctrl+0, Ctrl+Shift+0 – Скрытие (показ) столбцов

Alt+; – Отмена выделения скрытых ячеек (выделение видимых)

Ctrl+6 – Скрытие/показ графических объектов

Ctrl+G, F5 – Переход и выделение ячеек

Ctrl+F, Shift+F5 – Поиск

Shift+F4 – Повторный поиск

Ctrl+H – Поиск и замена

Ctrl+F3 – Присвоение имени

Ctrl+Shift+F3 – Создание имен по существующим заголовкам

F3 – Вставка имени в формулу

Shift+F2 – Добавление/редактирование примечания ячейки

Ctrl+Shift+O – Выделение всех ячеек с примечаниями

F9, Ctrl+= – Ручное вычисление формул во всех открытых книгах

Shift+F9 – Ручное вычисление формул в текущей таблице

Ctrl+’ – Включение/выключение режима показа формул

Ctrl+[, Ctrl+] – Выделение влияющих (зависимых) ячеек

Ctrl+Shift+[, Ctrl+Shift+] – Выделение косвенно влияющих (зависимых) ячеек

Ctrl+Shift+C – Копирование (запоминание) параметров графического объекта

Ctrl+Shift+V – Вставка (присвоение) параметров графического объекта

Ctrl+Shift+Space – Выделение всех графических объектов на листе

Клавиатурные комбинации редактирования содержимого ячеек

Ноmе – В начало строки

End – В конец строки

Ctrl+Стрелка вправо – На одно слово вправо

Ctrl+Стрелка влево – На одно слово влево

Ctrl+’ – Копирование в текущую ячейку всех данных из верхней ячейки

Ctrl+Shift+’ – Копирование в текущую ячейку из верхней ячейки всех значений, введенных или вычисленных по формуле

Delete (Back Space) – Удаление символа справа (слева) от курсора

Ctrl+Oelete – Удаление до конца строки

Клавиатурные комбинации перемещения по таблице

Tab – На ячейку вправо

Shift+Tab – На ячейку влево

Ctrl+Home – В первую первая ячейку таблицы (А1)

Ctrl+End, End и Home – В правый нижний угол активной области

Alt+Page Up – На экран влево

Alt+Page Down – На экран вправо

Ctrl+Back Space – Возврат к текущей ячейке (если она не видна)

Ctrl+ Стрелка вправо, End и Стрелка вправо – Вправо по строке к границе заполненной области

Ctrl+ Стрелка влево, End и Стрелка влево – Влево по строке к границе заполненной области

Ctrl+ Стрелка вниз, End и Стрелка вниз – Вниз по столбцу к границе заполненной области

Ctrl+ Стрелка вверх, End и Стрелка вверх – Вверх по столбцу к границе заполненной области

Клавиатурные комбинации перемещения по выделенному блоку

Enter – Сверху вниз слева направо

Shift+Enter – Снизу вверх справа налево

Tab – Слева направо сверху вниз

Shift+Tab – Справа налево снизу вверх

Ctrl+Alt+ Стрелка вправо – К следующей части кусочного блока

Ctrl+Alt+ Стрелка влево – К предыдущей части кусочного блока

Ctrl+ . – В углы выделенного блока по часовой стрелке

Клавиатурные комбинации перемещения по базе данных

Стрелка вниз, Enter – К следующей записи

Стрелка вврех, Shift+Enter – К предыдущей записи

Page Up – На 10 записей вперед

Page Down – На 10 записей назад

Ctrl+ Стрелка вниз, Ctrl+Page Down -К последней пустой записи

Ctrl+ Стрелка вверх, Ctrl+Page Up – К первой записи

Горячие клавиши Excel как пользоваться и где применять

Как столбцы сделать строками? Транспонирование в Excel

Задать имя диапазона Excel? Горячие клавиши

Сегодня хочу поделиться, возможностью, которая значительно ускорит вашу работу почти с любой программой — это Горячие клавиши Excel. Я стараюсь ими пользоваться как можно чаше. Если Вы начнете их регулярно использовать, я Вас уверяю, через две недели вы не будете применять команды на ленте задач, а через месяц не будете понимать как обходились без них. В общем, не ленитесь и это окупиться многократно!

Начнем с азов, «горячие клавиши Excel«, это клавиши при нажатии комбинации которых, происходит привязанное к ним действие.

Горячие клавиши — это сочетание клавиш, при нажатии на которые одновременно, выполняется какое-то действие. Это позволяет значительно сэкономить время, на поиске нужных кнопкой мышью в меню программы. Выражение появилось от английского «hot key«, буквально горячие клавиши, а в переносном смысле

Самые популярные горячие клавиши Excel

(причем эти комбинации действуют во многих программах, Wivdows в том числе)

Ctrl + S — сохранить документ

Ctrl + A — выделить все

Ctrl + C — копировать

Ctrl + Alt + V — специальная вставка

Ctrl + V — вставить

Ctrl + X — вырезать

Ctrl + Z — вернуться на действие назад

Ctrl + F — поиск документа

Накопленный опыт и исследования показывают, что горячие клавиши Ctrl + C, Ctrl + V, Ctrl + X и Ctrl + S экономят примерно 3% рабочего времени сотрудника, работающего регулярно за компьютером. Это действительно полезно!

Горячие клавиши на каждый день

Ctrl + 1 — открывает меню формат ячеек

Shift + ‘пробел’ — выделить всю строку

Ctrl + ‘пробел  — выделить весь столбец

Ctrl + ‘-‘, Ctrl + ‘+‘ — удаляет, добавляет строку

F4 — при написании формулы добавляет знак $ в формулу или т.н. якоря (выбор между абсолютными и относительными ссылками)

F7 — проверка правописания

ALT + = — функция автосумма

CTRL + стрелка вниз/вверх — перемещает указатель на последнюю/первую ячейку диапазона

CTRL + End — перемещает на последнюю заполненную ячейку.

CTRL + Shift + End — выделяет все ячейки до последней

ALT + стрелка вниз — простой выпадающий список

Полезные горячие клавиши Excel, но редко используемые

CTRL + Shift + 4 — вставить дату сегодня

CTRL + Shift + F3 — проименовать сразу несколько диапазонов

CTRL + PgUp/Pgdown — переключение между листами

CTRL + Shift + Enter — формула массива

ALT + F8 — открыть меню макросов

ALT + F11 — открыть VBA

Прочие ГК в Excel

Чтобы быстро скопировать диапазон — выделите его, зажмите CTRL, потяните за появившуюся границу, на нужное место. Диапазон копируется.

Не забывайте использовать alt + tab для переключения между окнами.

Windows + D — скрыть все окна.

Windows + L  закрыть доступ к рабочему столу

Внимание!!! Очень удобно использовать Windows стрелка влево и Windows стрелка вправо, это удобнейший способ расположить окна рядом, для одновременной работы.

Кнопка Windows — это правильное название кнопки Пуск. 

 

Поделитесь нашей статьей в ваших соцсетях:

Похожие статьи

Как столбцы сделать строками? Транспонирование в Excel

Задать имя диапазона Excel? Горячие клавиши

Конечный оператор (VBA) | Документы Microsoft

  • 2 минуты на чтение

В этой статье

Завершает процедуру или блок.

Синтаксис

Конец
Конечная функция
Конец Если
Конечное свойство
Выбор конца
Конечный переходник
Тип конца
Конец с

Синтаксис оператора End имеет следующие формы:

Заявление Описание
Конец Немедленно прекращает выполнение.Никогда не требуется сам по себе, но может быть размещен в любом месте процедуры для завершения выполнения кода, закрытия файлов, открытых с помощью оператора Open , и для очистки переменных.
Конечная функция Требуется для завершения оператора Function .
Конец Если Требуется для завершения блока. If… Then… Else statement.
Конечное свойство Требуется для завершения процедуры Property Let , Property Get или Property Set .
Выбор конца Требуется для завершения оператора Select Case .
Концевой переходник Требуется для завершения заявления Sub .
Тип конца Требуется для завершения определения пользовательского типа (оператор Тип ).
Конец с Требуется для завершения с помощью оператора .

Примечания

При выполнении оператор End сбрасывает все переменные уровня модуля и все статические локальные переменные во всех модулях.Чтобы сохранить значение этих переменных, используйте вместо этого оператор Stop . Затем вы можете возобновить выполнение, сохранив значение этих переменных.

Примечание

Оператор End внезапно останавливает выполнение кода, не вызывая события Unload, QueryUnload, Terminate или любой другой код Visual Basic. Код, который вы разместили в событиях Unload, QueryUnload и Terminate форм и модулей классов, не выполняется. Объекты, созданные из модулей класса, уничтожаются, файлы, открытые с помощью оператора Open , закрываются, а память, используемая вашей программой, освобождается.Ссылки на объекты, хранящиеся в других программах, становятся недействительными.

Оператор End позволяет принудительно остановить вашу программу. Для нормального завершения программы Visual Basic вы должны выгрузить все формы. Ваша программа закрывается, как только нет других программ, содержащих ссылки на объекты, созданные из ваших модулей общедоступного класса, и не выполняется код.

Пример

В этом примере используется оператор End для завершения выполнения кода, если пользователь вводит недопустимый пароль.

  Sub Form_Load
  Тусклый пароль, Pword
  PassWord = "Рыба-меч"
  Pword = InputBox («Введите свой пароль»)
  Если Pword <> PassWord Then
    MsgBox "Извините, неверный пароль"
    Конец
  Конец, если
Конец подписки
  

См. Также

Поддержка и отзывы

Есть вопросы или отзывы об Office VBA или этой документации? См. Раздел Поддержка и отзывы Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.

Конечная функция VBA | Использование конечного свойства в VBA (с примерами)

Конечная функция в VBA

End — это оператор в VBA , который имеет несколько форм в приложениях VBA, простой оператор End можно поместить в любом месте кода, и он автоматически остановит выполнение кода, оператор end используется во многих процедурах, например, для завершения подпроцедура или для завершения любой функции цикла, например End if.

Для всего есть конец, и в VBA он ничем не отличается. Вы, должно быть, видели это слово « End » во всех кодах вашего VBA. Мы можем закончить на «End Sub», «End Function», «End If». Это обычное явление, поскольку мы знаем, что каждый конец предполагает окончание процедуры. Эти операторы VBA End не требуют особого введения, потому что мы знакомы с ними в нашем коде VBA.

Помимо указанного выше «Конец», у нас есть одно свойство «Конец» в VBA. В этой статье мы расскажем вам об этом свойстве и о том, как использовать его в нашем коде.

Вы можете свободно использовать это изображение на своем веб-сайте, в шаблонах и т. Д. Пожалуйста, предоставьте нам ссылку с указанием авторства Ссылка на статью по гиперссылке
Например:
Источник: VBA End (wallstreetmojo.com)

Конечная собственность в VBA

«Конец» — это свойство, которое мы используем в VBA для перемещения в предложенном направлении. Типичный пример направления — перемещение от активной ячейки к последней использованной ячейке или ячейке последней записи по горизонтали и вертикали на листе.

Например, давайте вспомним это с помощью рабочего листа.Посмотрите на изображение ниже.

Прямо сейчас мы находимся в ячейке A1.

Если мы хотим перейти к последней использованной ячейке по горизонтали, мы используем горячую клавишу Excel Ctrl + стрелка вправо, и перенесет нас к последней использованной ячейке по горизонтали.

Точно так же, если мы хотим перейти к последней использованной ячейке вниз или по вертикали, мы нажимаем комбинацию клавиш Ctrl + стрелка вниз.

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

То же самое можно сделать в VBA, но не с помощью клавиши Ctrl . Скорее нам нужно использовать слово «Конец».

Примеры конечной функции Excel VBA

Пример № 1 — Использование свойства конца VBA для перемещения на листе

Давайте посмотрим, как использовать Excel VBA End для перемещения по листу. Во-первых, нам нужно решить, какую ячейку нам нужно переместить. Хорошо, допустим, нам нужно перейти от ячейки A1, поэтому обратитесь к ячейке с помощью объекта VBA Range.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1")

Конечный переводник 

Поставьте точек (.) , чтобы увидеть список IntelliSense. Выберите из списка свойство «Конец» VBA.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1"). Конец

Конечный переводник 

После выбора конечного свойства открывающая скобка.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1"). Конец (

Конечный переводник 

Как только вы откроете скобки, мы увидим все доступные варианты со свойством «Конец».Выберите «xlToRight» , чтобы перейти от ячейки A1 к последней использованной ячейке по горизонтали.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1"). Конец (xlToRight)

Конечный переводник 

После перехода к последней ячейке нам нужно выбрать, что нам нужно сделать. Поставьте точку (.), Чтобы увидеть список IntelliSense.

Код:

.

 Sub End_Example1 ()

  Диапазон («A1»). Конец (xlToRight).

Конечный переводник 

Выберите метод «Выбрать» из списка IntelliSense.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1"). Конец (xlToRight) .Select

Конечный переводник 

Это будет использовать ячейку A1 для последних использованных ячеек по горизонтали.

Аналогичным образом используйте три других параметра для перемещения вправо, влево, вниз, вверх.

Чтобы переместиться вправо из ячейки A1.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A1"). Конец (xlToRight) .Select

Конечный переводник 

Чтобы переместиться вниз из ячейки A1.

Код:

.

 Sub End_Example1 ()

  Диапазон («А1»).Конец (xlDown). Выбрать

Конечный переводник 

Чтобы перейти вверх из ячейки A5.

Код:

.

 Sub End_Example1 ()

  Диапазон ("A5"). Конец (xlUp) .Select

Конечный переводник 

Чтобы переместиться влево из ячейки D1.

Код:

.

 Sub End_Example1 ()

  Диапазон ("D1"). Конец (xlToLeft) .Select

Конечный переводник 

Все приведенные выше коды являются примерами использования свойства «Конец» для перемещения по рабочему листу.

Теперь посмотрим, как выбирать диапазоны с помощью свойства «Конец».

Пример № 2 — Выбор с использованием конечного свойства

Нам нужно завершить свойство, чтобы выбрать диапазон ячеек на листе. В этом примере рассмотрим данные ниже.

Выбрать ячейку от A1 до последней использованной ячейки

Чтобы выделить ячейки от A1 до последней использованной ячейки по горизонтали, сначала укажите ячейку A1 в объекте Range.

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1",

Конечный переводник 

Для второго аргумента откройте еще один объект Range и укажите только ячейку как A1.

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1", Диапазон ("A1")

Конечный переводник 

Закройте только одну скобку и поставьте точку, чтобы выбрать свойство Excel VBA End.

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1", Диапазон ("A1"). Конец (

Конечный переводник 

Теперь выберите xlToRight и закройте две скобки.

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1", Диапазон ("A1"). Конец (xlToRight))

Конечный переводник 

Теперь выберите метод «Выбрать».

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1", Диапазон ("A1"). Конец (xlToRight)). Выберите

Конечный переводник 

Хорошо, мы закончили.

Запустите этот код, чтобы увидеть влияние.

Как видите, выбран диапазон от A1 до D1.

Аналогичным образом, чтобы выбрать «вниз», используйте приведенный ниже код.

Код:

.

 Sub End_Example2 ()

  Диапазон ("A1", Диапазон ("A1"). Конец (xlDown)). Выберите
     'Для выбора слева направо
Конечный переводник 

Код:

.

 Sub End_Example2 ()

  Диапазон («A1», Диапазон («A1»).Конец (xlDown)). Выбрать
     'Чтобы выбрать сверху вниз
Конечный переводник 

Код:

.

 Sub End_Example2 ()

  Диапазон ("D1", Диапазон ("D1"). Конец (xlToLeft)). Выберите
     'Для выбора справа налево
Конечный переводник 

Код:

.

 Sub End_Example2 ()

  Диапазон ("A5", Диапазон ("A5"). Конец (xlUp)). Выберите
     'Чтобы выбрать снизу вверх
Конечный переводник 
Пример № 3 — Выбрать справа налево, справа вниз и сверху

Мы видели, как выбирать по горизонтали и вертикали.Чтобы выбрать как по вертикали, так и по горизонтали, нам нужно использовать два свойства «Конец». Чтобы выбрать данные от A1 до D5, нам нужно использовать приведенный ниже код.

Код:

.

 Sub End_Example3 ()

 Range ("A1", Range ("A1"). End (xlDown) .End (xlToRight)). Выбрать
  'Чтобы от ячейки A1 до последней использовать ячейку вниз и вправо
Конечный переводник 

Будет выбран полный диапазон, как показано ниже.

Таким образом, мы можем использовать свойство VBA «Конец» функции для выбора диапазона ячеек.

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

Это руководство по функции завершения Excel VBA. Здесь мы узнаем, как использовать End Property в VBA и End Property Selection, вместе с примерами и загружаемым шаблоном. Ниже приведены несколько полезных статей в Excel, связанных с VBA —

.

Обучение VBA (3 курса, 12+ проектов)