Remkomplekty.ru

IT Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel vba instr

Функция InStr

Возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.

Функция InStr имеет следующие аргументы:

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

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

Обязательный аргумент. Искомое строковое выражение.

Необязательный аргумент. Указывает тип сравнение строк. Если функция сравнить имеет значение null, возникает ошибка. Если аргумент » Сравнение«опущен, тип сравнения определяется параметром «сравнить «. Укажите допустимый LCID (LocaleID), чтобы использовать в сравнении правила, зависящие от языкового стандарта.

Совет: В Access 2010 построитель выражений включает функцию IntelliSense, которая указывает требуемые аргументы.

Аргумент сравнение может принимать следующие значения:

Выполняется сравнение с помощью параметра инструкции Option Compare.

Выполняется двоичное сравнение.

Выполняется текстовое сравнение.

Только в Microsoft Office Access 2007. Выполняется сравнение на основе сведений из базы данных.

строка1 является пустой

строка1 равна NULL

строка2 является пустой

строка2 равна NULL

строка2 не найдена

строка2 найдена в строке1

Позиция найденного соответствия

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

Примеры

Использование функции InStr в выражении. Функцию InStr можно использовать в любых выражениях. Например, если требуется определить позицию первой точки (.) в поле, которое содержит IP-адрес (IPAddress), можно использовать функцию InStr для его поиска:

Функция InStr проверяет каждое значение в поле IPAddress и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.

Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:

В этом примере функция InStr(1,[IPAddress],».») возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left получает эти символы из левой части поля IPAddress, возвращая значение 10.

Использование функции InStr в коде VBA

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

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

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

Функции VBA для работы с текстом

  • ASC ()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC( «D» ) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB () — возвращает только первый байт числового кода для символа.
    • AscW () — возвращает код для символа в кодировке Unicode
  • Chr () — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — » ), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.

    Dim sWord As String sWord = Chr(34) & «Слово в кавычках» & Chr(34)

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
    InStr () и InStrRev ()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.

    Dim sStr As String sStr = «w» If InStr(1, «Hello, World!», sStr, vbTextCompare) > 0 Then MsgBox «Искомое слово присутствует!» Else MsgBox «Искомое слово отсутствует!» End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
    Left (), Right (), Mid ()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.

    Dim sStr As String sStr = «Hello, World!» MsgBox Mid(sStr, 1, 5)

    Dim sStr As String sStr = «Hello, World!» MsgBox Replace(sStr, «Hello», «Bay»)

    Dim sStr As String sStr = «Hello, World!» MsgBox StrConv(«Hello, World!», vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

    • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
    • vbLowerCase: Преобразует все текстовые символы в нижний регистр
    • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
    • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
    • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
    • **vbKatakana: Преобразует символы Hiragana в символы Katakana
    • **vbHiragana: Преобразует символы Katakana в символы Hiragana
    • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
    • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

    * применимо для локализацией Дальнего востока
    ** применимо только для Японии
    *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse () — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab () — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String () — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().
  • VBA InStr and InStrRev – How to Use

    As the name suggests VBA InStr function looks for a substring embedded inside another string and then returns its starting position.

    If it cannot find the string inside the parent string then it returns 0. It is a very important function among the string functions in VBA. It is probably the best function to perform string search operations in VBA.

    In this post I will explain InStr and InStrRev functions in VBA with examples:

    Syntax of VBA Instr function:

    The syntax of Instr is as follows:

    Instr( [start], parent_string, substring, [compare] )

    Here, ‘start’ refers to the position from where the search should begin. It is an optional parameter and if it is omitted then string search begins from 1 st position inside the ‘parent_string’

    ‘parent_string’ is the string inside which the ‘substring’ is to be searched.

    ‘substring’ is the string which is to be searched inside the ‘parent_string’

    ‘compare’ specifies the comparison algorithm by which the search is to be made. It is also an optional parameter. In advanced cases compare parameter can have any one of the following values:

    Few Important points about Instr function:

    • If anyone of the strings i.e. ‘parent_string’ or ‘substring’ is Null. Then VBA Instr statement returns a Null and hence can cause a code to break. So, before passing any value to Instr Function check if the value is valid or not. Also, make sure that you have done proper Error Handling in the code.
    • It returns the ‘start’ parameter, if the ‘substring’ parameter is empty.
    • It returns a 0 if ‘substring’ is not present inside the ‘parent_string’.
    • If ‘start’ parameter’s value is greater than the length of ‘parent_string’ then also Instr function returns a 0.

    Examples of Instr Function:

    Now, let’s take some examples of VBA Instr function:

    1. InStr(«Excel-Trick», «Trick») will return a result 7 as the string “Trick” starts at the seventh position inside the ‘parent_string’ i.e. “Excel-Trick”.

    2. InStr(«Excel-Trick», «c») will result 3 as the character “c” first comes at the third position inside the ‘parent_string’.

    3. InStr(4, «Excel-Trick», «c») will result into 10 as here we are starting the search for “c” from the 4 th character and hence Instr gives us the position of second “c” (Excel-Trick) in the ‘parent_string’.

    4. InStr(«Alligator», «z») will result into 0 as there is no “z” character inside the parent string.

    5. InStr(1, «Alligator», «a») will result into 6 as the lowercase “a” character is present at position 6 inside the word “Alligator”.

    6. InStr(1, «Alligator», «a», vbTextCompare) will result into 1 as here we have used ‘vbTextCompare’ which ignores the difference between upper case and lowercase characters.

    Using vbTextCompare is not the best way:

    vbTextCompare is not a safe option to use while you are dealing with case-insensitive strings. The reason for this is because many times it can lead into misleading results while handling some characters:

    InStr(1,»Ætna»,»et»,vbTextCompare) results into 1, because the character “Æ” is a Latin character which stands for “et”. And hence vbTextCompare treats “Æ” equal to “et”, this behaviour of vbTextCompare is quite misleading.

    So, in the cases where you are dealing with case-insensitive characters like in Example 6, a better way would be:

    InStr( LCase(«Alligator»), LCase («a»))

    Here LCase function converts both the strings to lower case characters and the InStr statement results into 1.

    Reverse String Search Function in VBA: InStrRev

    InStrRev function is similar to the VBA InStr, with only difference being that it starts searching the ‘substring’ inside the ‘parent_string’ from end to start.

    The syntax of InStrRev is as follows:

    InStrRev (parent_string, substring, [start], [compare])

    Here also the ‘parent_string’ refers to the string within which the ‘substring’ is to be searched.

    ‘substring’ is the string that is to be searched inside the ‘parent_string’.

    ‘start’ is again an optional parameter that decides from which position the search is to be started.

    ‘compare’ parameter refers to the type of comparison like: vbBinaryCompare, vbTextCompare and

    Note: Note the difference in the place of parameters of both InStr and InStrRev functions.

    Example of InStrRev function:

    InStrRev(«aligator», «a») results into 5. InStrRev function starts searching for the “a” character inside the ‘parent_string’ from backwards and when it encounters the first “a” (from backwards) it checks its position from the forward direction and gives it position as the result.

    The practical use of InStrRev can be in finding the last index of a character inside a string.

    Sample Macro having both VBA InStr and VBA InStrRev:

    Below is a self-explanatory macro in which I have used both InStr and InStrRev functions:

    So, this was all about InStr and InStrRev functions in VBA. Do let us know if you have any doubts or queries related to the topic.

    Ankit is the founder of Excel Trick. He is tech Geek who loves to sit in front of his square headed girlfriend (his PC) all day long. :D. Ankit has a strong passion for learning Microsoft Excel. His only aim is to turn you guys into ‘Excel Geeks’.

    VBA InStr and InStrRev – How to Use

    As the name suggests VBA InStr function looks for a substring embedded inside another string and then returns its starting position.

    If it cannot find the string inside the parent string then it returns 0. It is a very important function among the string functions in VBA. It is probably the best function to perform string search operations in VBA.

    In this post I will explain InStr and InStrRev functions in VBA with examples:

    Syntax of VBA Instr function:

    The syntax of Instr is as follows:

    Instr( [start], parent_string, substring, [compare] )

    Here, ‘start’ refers to the position from where the search should begin. It is an optional parameter and if it is omitted then string search begins from 1 st position inside the ‘parent_string’

    ‘parent_string’ is the string inside which the ‘substring’ is to be searched.

    ‘substring’ is the string which is to be searched inside the ‘parent_string’

    ‘compare’ specifies the comparison algorithm by which the search is to be made. It is also an optional parameter. In advanced cases compare parameter can have any one of the following values:

    Few Important points about Instr function:

    • If anyone of the strings i.e. ‘parent_string’ or ‘substring’ is Null. Then VBA Instr statement returns a Null and hence can cause a code to break. So, before passing any value to Instr Function check if the value is valid or not. Also, make sure that you have done proper Error Handling in the code.
    • It returns the ‘start’ parameter, if the ‘substring’ parameter is empty.
    • It returns a 0 if ‘substring’ is not present inside the ‘parent_string’.
    • If ‘start’ parameter’s value is greater than the length of ‘parent_string’ then also Instr function returns a 0.

    Examples of Instr Function:

    Now, let’s take some examples of VBA Instr function:

    1. InStr(«Excel-Trick», «Trick») will return a result 7 as the string “Trick” starts at the seventh position inside the ‘parent_string’ i.e. “Excel-Trick”.

    2. InStr(«Excel-Trick», «c») will result 3 as the character “c” first comes at the third position inside the ‘parent_string’.

    3. InStr(4, «Excel-Trick», «c») will result into 10 as here we are starting the search for “c” from the 4 th character and hence Instr gives us the position of second “c” (Excel-Trick) in the ‘parent_string’.

    4. InStr(«Alligator», «z») will result into 0 as there is no “z” character inside the parent string.

    5. InStr(1, «Alligator», «a») will result into 6 as the lowercase “a” character is present at position 6 inside the word “Alligator”.

    6. InStr(1, «Alligator», «a», vbTextCompare) will result into 1 as here we have used ‘vbTextCompare’ which ignores the difference between upper case and lowercase characters.

    Using vbTextCompare is not the best way:

    vbTextCompare is not a safe option to use while you are dealing with case-insensitive strings. The reason for this is because many times it can lead into misleading results while handling some characters:

    InStr(1,»Ætna»,»et»,vbTextCompare) results into 1, because the character “Æ” is a Latin character which stands for “et”. And hence vbTextCompare treats “Æ” equal to “et”, this behaviour of vbTextCompare is quite misleading.

    So, in the cases where you are dealing with case-insensitive characters like in Example 6, a better way would be:

    InStr( LCase(«Alligator»), LCase («a»))

    Here LCase function converts both the strings to lower case characters and the InStr statement results into 1.

    Reverse String Search Function in VBA: InStrRev

    InStrRev function is similar to the VBA InStr, with only difference being that it starts searching the ‘substring’ inside the ‘parent_string’ from end to start.

    The syntax of InStrRev is as follows:

    InStrRev (parent_string, substring, [start], [compare])

    Here also the ‘parent_string’ refers to the string within which the ‘substring’ is to be searched.

    ‘substring’ is the string that is to be searched inside the ‘parent_string’.

    ‘start’ is again an optional parameter that decides from which position the search is to be started.

    ‘compare’ parameter refers to the type of comparison like: vbBinaryCompare, vbTextCompare and

    Note: Note the difference in the place of parameters of both InStr and InStrRev functions.

    Example of InStrRev function:

    InStrRev(«aligator», «a») results into 5. InStrRev function starts searching for the “a” character inside the ‘parent_string’ from backwards and when it encounters the first “a” (from backwards) it checks its position from the forward direction and gives it position as the result.

    The practical use of InStrRev can be in finding the last index of a character inside a string.

    Sample Macro having both VBA InStr and VBA InStrRev:

    Below is a self-explanatory macro in which I have used both InStr and InStrRev functions:

    So, this was all about InStr and InStrRev functions in VBA. Do let us know if you have any doubts or queries related to the topic.

    Ankit is the founder of Excel Trick. He is tech Geek who loves to sit in front of his square headed girlfriend (his PC) all day long. :D. Ankit has a strong passion for learning Microsoft Excel. His only aim is to turn you guys into ‘Excel Geeks’.

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

    Удаление ненужных символов

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

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

    Определение длины строки

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

    Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово «солнце», то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае — 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).

    Сравнение и поиск строк

    В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.

    Функция StrComp

    StrComp (String1, String2 [, Compare])

    String1, String2 — любые два строковых выражения, которые необходимо сравнивать.

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

    • vbBinaryCompare — бинарное сравнение двух строк;
    • vbTextCompare — текстовое сравнение двух строк;
    • vbDatabaseCompare — используется только в Microsoft Access.

    При выполнении StrComp возвращается одно из следующих значений:

    • -1, если String1 меньше String2;
    • 0, если String1 и String2 равны;
    • 1, если String1 больше String2.

    В вышеприведенном листинге в текстовом режиме сравниваются две строки: «Строка по умолчанию» и » Строка по умолчанию». Результат сравнения = 1, т.е. «Строка по умолчанию» больше, чем » Строка по умолчанию».

    Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.

    Функция InStr

    Функция InStr дает возможность определить, содержит ли одна строка другую строку.

    StrComp ([Start, ] String1, String2 [, Compare])

    String1, String2 — любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.

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

    • vbBinaryCompare — бинарное сравнение двух строк;
    • vbTextCompare — текстовое сравнение двух строк;
    • vbDatabaseCompare — используется только в Microsoft Access.

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

    InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.

    Разбиение строки

    Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid.

    Функция Left

    Left (String, Length)

    String — любое допустимое строковое выражение.

    Length — любое численное значение.

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

    Функция Right

    Right (String, Length)

    String — любое допустимое строковое выражение.

    Length — любое численное значение.

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

    Функция Mid

    Mid (String, Start, [, Length])

    String — любое допустимое строковое выражение.

    Length, Start — любые численные значения.

    Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.

    Символы, которые нельзя ввести с клавиатуры

    Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация — когда надо в строку включить служебный символ VBA (самый распространенный случай — включение двойных кавычек).

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

    Charcode — любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.

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

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

    • vbCr — символ возврата каретки. Эквивалент Chr(13)
    • vbLf — символ смещения на одну строку. Эквивалент Chr(10)
    • vbCrLf — символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
    • vbTab — символ табуляции. Эквивалент Chr(9)

    Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу «character sets» будет представлена соответствующая таблица.


    Форматирование значений данных

    Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format.

    VBA-функция Format идентична функции Format в Excel и использует те же символы-заполнители форматирования данных.

    Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])

    Expression — любое допустимое выражение (обязательный аргумент).

    Format — допустимое выражение именованного или определенного пользователем формата.

    Firstdayofweek — константа, которая определяет первый день недели.

    Firstweekofyear — константа, которая определяет первую неделю года.

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

    Читать еще:  Vba excel find синтаксис
    Ссылка на основную публикацию
    Adblock
    detector