В vba функция: Заявление функции (VBA) | Microsoft Learn

Использование функций листов Excel в Visual Basic





Twitter




LinkedIn




Facebook




Адрес электронной почты










  • Статья

  • Чтение занимает 2 мин

В операторах Visual Basic можно использовать большинство функций листов Microsoft Excel. Список функций листов, которые можно использовать, см. в статье Список функций листов, доступных для Visual Basic.

Примечание

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

Вызов функции листа из Visual Basic

В Visual Basic функции листов Excel доступны через объект WorksheetFunction.

В следующей процедуре Sub используется функция листа Min для определения наименьшего значения в диапазоне ячеек. Сначала переменная myRange объявляется как объект Range, а затем ей присваивается диапазон A1:C10 на листе Sheet1. Другой переменной, answer, назначается результат применения функции Min к myRange. В конце значение answer отображается в окне сообщения.

Sub UseFunction() 
 Dim myRange As Range 
 Set myRange = Worksheets("Sheet1").Range("A1:C10") 
 answer = Application.WorksheetFunction.Min(myRange) 
 MsgBox answer 
End Sub

Если вы используете функцию листа, для которой требуется ссылка на диапазон в качестве аргумента, необходимо указать объект Range. Например, можно использовать функцию листа Match (ПОИСКПОЗ) для поиска диапазона ячеек. В ячейке листа потребовалось бы ввести формулу, например =ПОИСКПОЗ (9;A1:A10;0). Однако в процедуре Visual Basic необходимо указать объект Range, чтобы получить такой же результат.

Sub FindFirst() 
 myVar = Application.WorksheetFunction _ 
 .Match(9, Worksheets(1).Range("A1:A10"), 0) 
 MsgBox myVar 
End Sub

Примечание

Функции Visual Basic не используют квалификатор WorksheetFunction. Функция может иметь такое же имя, что и функция Microsoft Excel, но работать по-другому. Например, Application. WorksheetFunction.Log и Log возвращают разные значения.

Вставка функции листа в ячейку

Чтобы вставить функцию листа в ячейку, укажите функцию в качестве значения свойства Formula соответствующего объекта Range. В следующем примере функция листа RAND (создающая случайное число), назначается свойству Formula диапазона A1:B3 на листе Sheet1 в активной книге.

Sub InsertFormula() 
 Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()" 
End Sub

Пример

В этом примере используется функция листа Pmt, чтобы рассчитать кредитный платеж по ипотечной ссуде. Обратите внимание, что в этом примере используется метод InputBox вместо функции InputBox, чтобы метод мог выполнять проверку типов. Операторы Static приводят к тому, что Visual Basic сохраняет значения трех переменных; они отображаются как значения по умолчанию при следующем запуске программы.

Static loanAmt 
Static loanInt 
Static loanTerm 
loanAmt = Application.InputBox _ 
 (Prompt:="Loan amount (100,000 for example)", _ 
 Default:=loanAmt, Type:=1) 
loanInt = Application.InputBox _ 
 (Prompt:="Annual interest rate (8.75 for example)", _ 
 Default:=loanInt, Type:=1) 
loanTerm = Application.InputBox _ 
 (Prompt:="Term in years (30 for example)", _ 
 Default:=loanTerm, Type:=1) 
payment = Application.WorksheetFunction _ 
 .Pmt(loanInt / 1200, loanTerm * 12, loanAmt) 
MsgBox "Monthly payment is " & Format(payment, "Currency")

См. также

  • Функции Excel (по категориям)

Поддержка и обратная связь

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






Функция значения VBA — voxt.ru

Функция Excel VBA Val

Val функция в vba относится к строковым функциям, это также встроенная функция в VBA, которая используется для получения числовых значений из переменной данных, предположим, если переменная имеет значение как A10, тогда функция val даст нам 10 в качестве вывода, она принимает строку как аргумент и возвращает числа, присутствующие в строке.

VAL означает VALUE в терминологии VBA. Эта функция преобразует строку, содержащую числа, в фактическое число. Например, если вы укажете текстовую строку «1234 Global», будет возвращена только числовая часть, т. е. 1234.

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

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

Синтаксис

У него есть только один аргумент, то есть строка.

  • Нить: Это просто строковое значение, из которого мы пытаемся извлечь числовую часть.

Итак, функция VAL преобразует предоставленную строку в числовое значение.

Примечание: Функция VAL всегда игнорирует символы пробела и продолжает считывать числа после символа или символов пробела.

Например, если предоставленная строка «145 45 666 3», она будет игнорировать символы пробела и вернет результат как «145456663».

Примеры функции VAL в Excel VBA

Вы можете скачать этот шаблон Excel функции VBA Val здесь — Шаблон Excel функции VBA Val

Пример №1

Давайте попробуем первый пример с простым числом, то есть «14 56 47».

Код ниже для вас.

Код:

Sub Val_Example1()
   Dim k As Variant
   k = Val("14 56 47")
   'Convert the above as 145647
   MsgBox k
End Sub

Когда ты запустить код VBAЗапустить код VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. читать далее с помощью клавиши F5 или вручную он вернет результат «145647», игнорируя все символы пробела, как показано на изображении ниже.

Пример #2

В этом примере мы увидим результат строки «+456».

Код:

Sub Val_Example2()
   Dim k As Variant
   k = Val("+456")
  'Convert the above as 456
   MsgBox k
End Sub

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

Пример №3

Теперь попробуем то же число с отрицательным знаком.

Код:

Sub Val_Example3()
   Dim k As Variant
   k = Val("-456")
  'Convert the above as -456
   MsgBox k
End Sub

Этот код вернет значение -456 только потому, что должно быть показано число со знаком оператора.

Пример №4

Теперь давайте попробуем эту строку «100 кг».

Код:

Sub Val_Example4()
    Dim k As Variant
    k = Val("100 KG")
    'Ignores KG and returns only 100
    MsgBox k
End Sub

Если вы запустите этот код вручную или с помощью клавиши F5, то приведенный выше код игнорирует «KG» и возвращает только «100» в поле Окно сообщения VBAОкно сообщений VBAФункция VBA MsgBox — это функция вывода, которая отображает обобщенное сообщение, предоставленное разработчиком. Этот оператор не имеет аргументов, и персонализированные сообщения в этой функции записываются в двойных кавычках, а для значений предоставляется ссылка на переменную.читать далее.

Пример №5

Теперь попробуйте ввести строку даты, например «14-05-2018».

Код:

Sub Val_Example5()
   Dim k As Variant
   k = Val("14-05-2019")
  'Returns 14 as the result.
   MsgBox k
End Sub

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

Пример №6

Теперь попробуйте строку «7459Good456».

Код:

Sub Val_Example6()
    Dim k As Variant
    k = Val("7459 Good 456")
    'Returns 7459 as the result.
    MsgBox k
End Sub

Это будет извлекать числа до тех пор, пока не будет найден нечисловой символ, т. е. результат будет 7459. Несмотря на то, что после нечислового значения «Хорошо» есть числовые значения, последующие числа полностью игнорируются.

Пример №7

Теперь попробуйте строковое значение «H 12456».

Код:

Sub Val_Example7()
    Dim k As Variant
    k = Val("H 12456")
    'Returns 0 as the result.
    MsgBox k
 
End Sub

Запустите приведенный выше код с помощью сочетания клавиш F5 или вручную, после чего он вернет результат как ноль. Поскольку самый первый символ строки, которую мы предоставили, не является числовым символом, поэтому результат равен нулю.

Пример №8

Теперь попробуйте эту строку «24545 . 2”.

Код:

Sub Val_Example8()
    Dim k As Variant
    k = Val("24545 . 2")
    'Returns 24545.2 as the result.
    MsgBox k
End Sub

Код возвращает результат как 24545.2, поскольку функция VBA VAL рассматривает символ точки (.) как десятичный символ и возвращает результат соответственно.

УЗНАТЬ БОЛЬШЕ >>


Post Views: 768

Похожие записи

Прокрутить вверх

Как использовать оператор FOR.

..NEXT (VBA)

В этом учебнике Excel объясняется, как использовать оператор Excel FOR…NEXT для создания цикла FOR в VBA с синтаксисом и примерами.

Описание

Оператор Microsoft Excel FOR…NEXT используется для создания цикла FOR, позволяющего выполнять код VBA определенное количество раз.

Оператор FOR…NEXT — это встроенная функция Excel, относящаяся к категории Логическая функция . Его можно использовать как функцию VBA (VBA) в Excel. В качестве функции VBA вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic.

Подписаться


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

Пример загрузки

Синтаксис

Синтаксис для создания цикла FOR с использованием оператора FOR…NEXT в Microsoft Excel:

 Для счетчика   =  start  To  end  [шаг 1 приращение]
   {. ..операторы...} 
Далее [ счетчик ]

Параметры или аргументы

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

Возвращает

Оператор FOR…NEXT создает цикл FOR в VBA.

Пример (как функция VBA)

Оператор FOR…NEXT можно использовать только в коде VBA в Microsoft Excel.

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

Одиночный цикл

Простейшая реализация цикла FOR состоит в использовании оператора FOR…NEXT для создания одного цикла. Это позволит вам повторять код VBA фиксированное количество раз.

Например:

 Sub Single_Loop_Example
   Dim LCounter как целое число
   Для LCounter = от 1 до 5
      MsgBox (LCounter)
   Следующий LCounter
End Sub 

В этом примере цикл FOR управляется переменной LCounter . Он будет повторяться 5 раз, начиная с 1 и заканчивая 5. Каждый раз в цикле будет отображаться окно сообщения со значением 9.0011 LСчетчик переменная. Этот код отобразит 5 окон сообщений со следующими значениями: 1, 2, 3, 4 и 5.

Одиночный цикл — изменение приращения

По умолчанию цикл FOR будет увеличивать свой счетчик циклов на 1, но это может быть индивидуальные. Вы можете использовать STEP приращение для изменения значения, используемого для увеличения счетчика. Инкремент цикла FOR может принимать как положительные, так и отрицательные значения.

Положительное приращение

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

Например:

 Sub Increment_Positive_Example
   Dim LCounter как целое число
   Для LCounter = от 1 до 9 Шаг 2
      MsgBox LCounter
   Следующий LCounter
End Sub 

В этом примере мы использовали Шаг 2 в цикле FOR, чтобы изменить приращение на 2. Это означает, что цикл FOR будет начинаться с 1, увеличиваться на 2 и заканчиваться на 9. code будет отображать 5 окон сообщений со следующими значениями: 1, 3, 5, 7 и 9.

Отрицательное приращение

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

Например:

 Sub Increment_Negative_Example
   Dim LCounter как целое число
   Для LCounter = от 50 до 30 Шаг -5
      MsgBox LCounter
   Следующий LCounter
End Sub 

Когда вы увеличиваете отрицательное значение, вам нужно, чтобы начальное число было большим значением, а конечное число — меньшим значением, так как цикл FOR будет отсчитывать. Таким образом, в этом примере цикл FOR будет начинаться с 50, увеличиваться на -5 и заканчиваться на 30. Код будет отображать 5 окон сообщений со следующими значениями: 50, 45, 40, 35 и 30.

Двойной цикл

Далее рассмотрим пример создания двойного цикла FOR в Microsoft Excel.

Например:

 Sub Double_Loop_Example
   Dim LCounter1 как целое число
   Dim LCounter2 как целое число
   Для LCounter1 = от 1 до 4
      Для LCounter2 = от 8 до 9
         MsgBox LCounter1 & "-" & LCounter2
      Следующий LCounter2
   Следующий LCounter1
End Sub 

Здесь у нас есть 2 цикла FOR. Внешний цикл FOR управляется переменной LCounter1 . Внутренний цикл FOR управляется LCounter2 переменная.

В этом примере внешний цикл FOR будет выполняться 4 раза (начиная с 1 и заканчивая 4), а внутренний цикл FOR будет повторяться 2 раза (начиная с 8 и заканчивая 9). Во внутреннем цикле код каждый раз будет отображать окно сообщения со значением LCounter1 LCounter2 . Таким образом, в этом примере будет отображаться 8 окон сообщений со следующими значениями: 1–8, 1–9, 2–8, 2–9, 3–8, 3–9, 4–8 и 4–9.

Тройной контур

Далее рассмотрим пример создания тройного цикла FOR в Microsoft Excel.

Например:

 Sub Triple_Loop_Example
   Dim LCounter1 как целое число
   Dim LCounter2 как целое число
   Dim LCounter3 как целое число
   Для LCounter1 = от 1 до 2
      Для LCounter2 = от 5 до 6
         Для LCounter3 = от 7 до 8
            MsgBox LCounter1 & "-" & LCounter2 & "-" & LCounter3
         Следующий LCounter3
      Следующий LCounter2
   Следующий LCounter1
End Sub 

Здесь у нас есть 3 цикла FOR. Самый внешний цикл FOR управляется LCounter1 переменная. Следующий цикл FOR управляется переменной LCounter2 . Самый внутренний цикл FOR управляется переменной LCounter3 .

В этом примере самый внешний цикл FOR будет повторяться 2 раза (начиная с 1 и заканчивая 2), следующий цикл FOR будет повторяться 2 раза (начиная с 5 и заканчивая 6), а самый внутренний цикл FOR цикл будет повторяться 2 раза (начиная с 7 и заканчивая 8).

В самом внутреннем цикле код каждый раз будет отображать окно сообщения со значением LСчетчик1 LСчетчик2 LСчетчик3 . Этот код будет отображать 8 окон сообщений со следующими значениями: 1-5-7, 1-5-8, 1-6-7, 1-6-8, 2-5-7, 2-5-8, 2- 6-7 и 2-6-8.

Пример №1 из видео

В первом видеопримере мы собираемся использовать оператор For…Next для циклического перебора продуктов в столбце A и обновления соответствующего типа приложения в столбце B.

 Sub totn_for_loop_example1( )
   Dim LCounter как целое число
   Для LCounter = от 2 до 4
      Если Ячейки(LCounter, 1).Value = "Excel" Тогда
         Ячейки (LCounter, 2). Значение = "Электронная таблица"
      ElseIf Cells(LCounter, 1).Value = "Доступ" Тогда
         Ячейки (LCounter, 2). Значение = "База данных"
      ElseIf Cells(LCounter, 1).Value = "Word" Тогда
         Ячейки(LCounter, 2).Value = "Текстовый процессор"
      Конец, если
   Следующий LCounter
Конец суб 

Пример №2 из видео

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

 Sub totn_for_loop_example2()
   Dim LCounter1 как целое число
   Dim LCounter2 как целое число
   Для LCounter1 = от 2 до 9 Шаг 2
      Ячейки (LCounter1, 2). Значение = "Команда А"
   Следующий LCounter1
   Для LCounter2 = от 3 до 9 Шаг 2
      Ячейки (LCounter2, 2). Значение = "Команда Б"
   Следующий LCounter2
Конец суб 

VBA-эквивалент встроенной функции SQL

спросил

Изменено
1 год, 9 месяцев назад

Просмотрено
8к раз

Я пишу условное выражение в vba, например

, если (userID = 1 или userID = 2 или userID = 3 или userID = 4), то
...
 

Мне интересно, есть ли более быстрый и чистый способ сделать это. Что-то вроде

 если (идентификатор пользователя в (1,2,3,4)) тогда
. ..
 

Спасибо

2

Альтернативой может быть:

 выберите идентификатор пользователя
    случай 1,2,3,4,5,6
       ' сделай что-нибудь
конец выберите
 

Очень хорошо передает значение конструкции if... then... else .

Другой способ

 If UBound(Filter(Array(1, 2, 3, 4, 5, 6), UserID)) > -1 Then
 

Фильтр возвращает массив с совпадением. Если совпадений нет, ubound = -1.

Вы можете использовать функцию Application.Match для массива:

 If Not IsError(Application.Match(userID, Split("1,2,3,4",","))) Then...
 

2

CW , потому что это соответствует гипотетическому примеру, но вряд ли соответствует реальной ситуации использования. Тем не менее, Like — хорошее ключевое слово, которое нужно знать.

 Если userID Нравится "[1-6]" Тогда
 

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