Vba excel проверка символа в ячейке

In this Article

  • INSTR Function
    • Instr Example
    • Instr Syntax
    • Instr Start Position
    • Case-Insensitive INSTR Test
  • InstrRev Function
  • VBA Coding Made Easy
  • InString Examples
    • If String Contains Substring
    • Find Text String in a Cell
    • Find Position of a Character in a String
    • Search String for Word
    • If Variable Contains String
    • Instr and the Left Function
  • Using Instr in Microsoft Access VBA

INSTR Function

The VBA Instr Function checks if a string of text is found in another string of text.  It returns 0 if the text is not found. Otherwise it returns the character position where the text is found.

The Instr Function performs exact matches. The VBA Like Operator can be used instead to perform inexact matches / pattern matching by using Wildcards.

Instr Example

The following code snippet searches the string “Look in this string” for the word “Look”. The Instr Function returns 1 because the text is found in the first position.

Sub FindSomeText()
  MsgBox InStr("Look in this string", "Look")
End Sub

This second example returns 7 because the text is found starting in the 7th position:

Sub FindSomeText2()
  MsgBox InStr("Don't Look in this string", "Look")
End Sub

Important! The Instr Function is case-sensitive by default. This means “look” will not match with “Look”. To make the test case-insensitive read below.

Instr Syntax

The syntax for the Instr function is as follows:

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

[start] (optional) – This optional argument is the starting position of the search. Enter 1 to start searching from position 1 (or leave blank). Enter 5 to start searching from position 5. Important! The INSTR function calculates the character position by counting from 1 NOT from the [start] position.

string – The string of text to search in.

substring – The string of text to find in the primary string.

[compare] (optional) – By default, Instr is case-sensitive. By setting this argument you can make Instr Case insensitive:

Argument vb Value

Argument Integer Description
vbBinaryCompare

0

(Default) Case-sensitive

vbTextCompare

1

Not Case-sensitive

vbDatabaseCompare

2

MS Access Only. Uses information in the database to perform comparison.

Instr Start Position

The Instr start position allows you to indicate the character position where you will begin your search.  Keep in mind however, the Instr output will always count from 1.

Here we set the start position to 3 to skip the first B:

Sub Instr_StartPosition()
  MsgBox InStr(3, "ABC ABC", "B")
End Sub

The result is 6 because the second B is the 6th character in the string.

Case-Insensitive INSTR Test

By default, VBA treats “L” different from “l”. In other words, VBA is case-sensitive. This is true of all text functions.  To make VBA case-insensitive, set the [compare] argument to 1 or vbTextCompare.

Public Sub FindText_IgnoreCase()
  MsgBox InStr(1, "Don't Look in this string", "look", vbTextCompare)
End Sub

Alternatively, you can add Option Compare Text to the top of your code module:

Option Compare Text
Option Compare Text

Public Sub FindText_IgnoreCase2()
  MsgBox InStr("Don't Look in this string", "look")
End Sub

Option Compare Text will impact all of the code in that module. I personally place this at the top of any module that deals with text because I never care about case differences.

InstrRev Function

The Instr Function searches from the left. Instead you can search from the right using the InstrRev Function.  The InstrRev Function works very similarly to the Instr function.

Sub FindSomeText_FromRight()
  MsgBox InStrRev("Look in this string", "Look")
End Sub

Just like the Instr function this will return 1 because there is only one instance of “Look” in the text. But if we add a second “Look”, you’ll see that it returns the position of the right-most “Look”:

Sub FindSomeText_FromRight()
  MsgBox InStrRev("Look in this string Look", "Look")
End Sub

Next we will review more Instr examples.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Instr

Learn More!

InString Examples

If String Contains Substring

Here we will use an If statement to test if a string contains a a substring of text:

Public Sub FindSomeText()

If InStr("Look in this string", "look") = 0 Then
   MsgBox "No match"
Else
   MsgBox "At least one match"
End If

End Sub

Find Text String in a Cell

You can also find a string in a cell:

Sub Find_String_Cell()
    If InStr(Range("B2").Value, "Dr.") > 0 Then
        Range("C2").Value = "Doctor"
    End If
End Sub

vba find text in cell

Or loop through a range of cells to test if the cells contain some text:

Sub Search_Range_For_Text()
Dim cell As Range

    For Each cell In Range("b2:b6")
        If InStr(cell.Value, "Dr.") > 0 Then
            cell.Offset(0, 1).Value = "Doctor"
        End If
    Next cell
    
End Sub

search range for text

VBA Programming | Code Generator does work for you!

Find Position of a Character in a String

This code will find the position of a single character in a string and assign the position to a variable:

Sub Find_Char()
  Dim n As Long
  n = InStr("Here Look Here", "L")
End Sub

Search String for Word

This code will search a string for a word:

Sub Search_String_For_Word()
    Dim n As Long
    n = InStr("Here Look Here", "Look")
  
    If n = 0 Then
        MsgBox "Word not found"
    Else
        MsgBox "Word found in position: " & n
    End If
End Sub

If Variable Contains String

This code will test if a string variable contains a string of text:

Sub Variable_Contains_String()
    Dim str As String
    str = "Look Here"
    
    If InStr(str, "Here") > 0 Then
        MsgBox "Here found!"
    End If
End Sub

Instr and the Left Function

Instr can be used along with other text functions like Left, Right, Len, and Mid to trim text.

With the Left function you can output the text prior to a string of text:

Sub Instr_Left()
    Dim str As String
    Dim n As Long
    
    str = "Look Here"
    
    n = InStr(str, "Here")
    
    MsgBox Left(str, n - 1)

End Sub

Using Instr in Microsoft Access VBA

All of the above examples work exactly the same in Access VBA as in Excel VBA.

vba instr access

To learn more, read our article: VBA text functions

<<Return to VBA Examples

Sub FindSymbol()
Dim aData(), aSpl
Dim lRw As Long, i As Long, k As Long, j As Long
    With Worksheets("sheet1") ' лист с исходными данными'
        lRw = .Cells(.Rows.Count, 1).End(xlUp).Row 'последняя строка с данными в столбце А'
        aData = .Range("A1:A" & lRw).Value ' тексты заносим в массив'
    End With

    ' определяем (с запасом) размерность массива результата'
    ReDim aRes(1 To lRw * 5, 1 To 1) ' 5 - макс к-во фрагментов в текстах'

    For i = 2 To lRw ' цикл по текстам, начиная со стоки 2'
        aSpl = Split(aData(i, 1), "#")  ' расщепляем на фрагменты'

        For j = 0 To UBound(aSpl)
            k = k + 1: aRes(k, 1) = aSpl(j)  ' записываем фрагменты в массив результата'
        Next j
    Next i

    With Worksheets("sheet1") ' лист для выгрузки'
        .Columns(3).ClearContents ' чистим столбец С'
        .Range("C2").Resize(k, 1).Value = aRes ' выгружаем результат в столбец С'
    End With

    MsgBox "OK", 64, "" ' радуемся :)'
End Sub

Для выгрузки в исходный диапазон вместо последнего блока With/End With записать строку

Worksheets("sheet1").Range("A2").Resize(k, 1).Value = aRes ' выгружаем результат в столбец A'

Можно формулой.

  • Для одной ячейки, результат по строкам:

    =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(«#»&$A$2;»#»;ПОВТОР(» «;99));СТРОКА(A1)*99;99))

  • Для диапазона ячеек, результат по столбцам:

    =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(«#»&$A2;»#»;ПОВТОР(» «;99));СТОЛБЕЦ(A1)*99;99))

Хотя для разнесения по столбцам можно проще — применить инструмент

Данные-Текст_по_столбцам-С_разделителем

  • Для диапазона ячеек, результат по строкам.

В доп. столбце находим количество фрагментов для подсказки основной формуле: в первой строке диапазона — 1, ниже формула

=ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;"#";))+1+B2

Результат:

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ("#"&ИНДЕКС($A$2:$A$20;ПОИСКПОЗ(СТРОКА(A1);$B$2:$B$20));"#";ПОВТОР(" ";99));(СТРОКА(A1)-ИНДЕКС($B$2:$B$20;ПОИСКПОЗ(СТРОКА(A1);$B$2:$B$20))+1)*99;99))

введите сюда описание изображения

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

InStr – это функция, которая предназначена для определения номера позиции первого вхождения одной строки в другую. Она возвращает значение типа Variant (Long).

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

Функция InStr часто незаменима при определении параметров функций Left, Mid и Right. Также ее можно использовать для определения наличия искомой подстроки в заданной строке.

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

Синтаксис, параметры, значения

Синтаксис функции InStr

Полный вариант:

InStr([start], string1, string2, [compare])

Сокращенный вариант:

Чаще всего в VBA Excel используется сокращенный вариант функции со значениями необязательных параметров по умолчанию.

Параметры функции InStr

Параметр Описание Значение по умолчанию
start Необязательный аргумент.* Числовое выражение, которое задает начальную позицию для поиска. 1
string1 Обязательный аргумент. Строковое выражение, в котором выполняется поиск.
string2 Обязательный аргумент. Искомое строковое выражение.
compare Необязательный аргумент. Задает тип сравнения строк. –1**

* Если задан аргумент compare, аргумент start является обязательным.
** Если аргумент compare не указан, используется значение инструкции Option Compare, заданное на уровне модуля. Если инструкция Option Compare в начале модуля отсутствует, используется ее значение по умолчанию – 0 (двоичное сравнение).

Если параметр start или параметр compare содержит значение NULL, возникает ошибка.

Значения аргумента «compare»

Константа Значение Описание
vbUseCompareOption -1 Сравнение с помощью параметра инструкции Option Compare.
vbBinaryCompare 0 Двоичное (бинарное) сравнение.*
vbTextCompare 1 Текстовое сравнение.*
vbDatabaseCompare 2 Сравнение на основе сведений из базы данных. Только для Microsoft Access.

* При двоичном сравнении учитывается регистр букв, при текстовом – не учитывается.

Значения функции InStr

Если Возвращаемое значение
string2 найдена в string1 Позиция первого найденного соответствия.
string2 не найдена в string1 0
string2 является пустой start
string2 равна Null Null
string1 является пустой 0
string1 равна Null Null
start больше длины string1 0

Примеры использования в VBA Excel

Пример 1

Самый простой пример:

Sub Test1()

Dim x As Variant

x = InStr(«На горе Фернандо-По, где гуляет Гиппо-по», «Фернандо»)

MsgBox x

‘Здесь x будет равен 9

End Sub

Пример 2

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

Sub Test2()

Dim x As Variant

x = InStr(10, «На горе Фернандо-По, где гуляет Гиппо-по», «по», 0)

MsgBox x

‘Здесь x будет равен 36 (поиск с учетом регистра символов)

x = InStr(10, «На горе Фернандо-По, где гуляет Гиппо-по», «по», 1)

MsgBox x

‘Здесь x будет равен 18 (поиск без учета регистра символов)

End Sub

Обратите внимание: несмотря на то, что начало поиска мы задали с 10 символа, номер позиции первого вхождения считается с начала строки, в которой выполняется поиск.

Пример 3

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

Sub Test3()

Dim x As Variant

x = InStr(«На горе Фернандо-По, где гуляет Гиппо-по», «гор»)

MsgBox x

‘Здесь x будет равен 4

x = InStrB(«На горе Фернандо-По, где гуляет Гиппо-по», «гор»)

MsgBox x

‘Здесь x будет равен 7

End Sub

Результат 7 при побайтовом сравнении получен для кодировки, у которой один символ составляет 2 байта.


Содержание

  1. InStr function
  2. Syntax
  3. Settings
  4. Return values
  5. Remarks
  6. Example
  7. See also
  8. Support and feedback
  9. VBA INSTR – Find Text in a String
  10. INSTR Function
  11. Instr Example
  12. Instr Syntax
  13. Instr Start Position
  14. Case-Insensitive INSTR Test
  15. InstrRev Function
  16. VBA Coding Made Easy
  17. InString Examples
  18. If String Contains Substring
  19. Find Text String in a Cell
  20. Find Position of a Character in a String
  21. Search String for Word
  22. If Variable Contains String
  23. Instr and the Left Function
  24. Using Instr in Microsoft Access VBA
  25. VBA Code Examples Add-in
  26. Метод Application.CheckSpelling (Excel)
  27. Синтаксис
  28. Параметры
  29. Возвращаемое значение
  30. Замечания
  31. Поддержка и обратная связь
  32. Как определить, является ли символ в ячейке числом, буквой или специальным символом с помощью VBA?
  33. 4 ответа

InStr function

Returns a Variant (Long) specifying the position of the first occurrence of one string within another.

Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Syntax

InStr([ start ], string1, string2, [ compare ])

The InStr function syntax has these arguments:

Part Description
start Optional. Numeric expression that sets the starting position for each search. If omitted, search begins at the first character position. If start contains Null, an error occurs. The start argument is required if compare is specified.
string1 Required. String expression being searched.
string2 Required. String expression sought.
compare Optional. Specifies the type of string comparison. If compare is Null, an error occurs. If compare is omitted, the Option Compare setting determines the type of comparison. Specify a valid LCID (LocaleID) to use locale-specific rules in the comparison.

Settings

The compare argument settings are as follows.

Constant Value Description
vbUseCompareOption -1 Performs a comparison by using the setting of the Option Compare statement.
vbBinaryCompare 0 Performs a binary comparison.
vbTextCompare 1 Performs a textual comparison.
vbDatabaseCompare 2 Microsoft Access only. Performs a comparison based on information in your database.

Return values

If InStr returns
string1 is zero-length 0
string1 is Null Null
string2 is zero-length start
string2 is Null Null
string2 is not found 0
string2 is found within string1 Position at which match is found
start > string2 0

The InStrB function is used with byte data contained in a string. Instead of returning the character position of the first occurrence of one string within another, InStrB returns the byte position.

Example

This example uses the InStr function to return the position of the first occurrence of one string within another.

See also

Support and feedback

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

Источник

VBA INSTR – Find Text in a String

In this Article

INSTR Function

The VBA Instr Function checks if a string of text is found in another string of text. It returns 0 if the text is not found. Otherwise it returns the character position where the text is found.

The Instr Function performs exact matches. The VBA Like Operator can be used instead to perform inexact matches / pattern matching by using Wildcards.

Instr Example

The following code snippet searches the string “Look in this string” for the word “Look”. The Instr Function returns 1 because the text is found in the first position.

This second example returns 7 because the text is found starting in the 7th position:

Important! The Instr Function is case-sensitive by default. This means “look” will not match with “Look”. To make the test case-insensitive read below.

Instr Syntax

The syntax for the Instr function is as follows:

[start] (optional) – This optional argument is the starting position of the search. Enter 1 to start searching from position 1 (or leave blank). Enter 5 to start searching from position 5. Important! The INSTR function calculates the character position by counting from 1 NOT from the [start] position.

string – The string of text to search in.

substring – The string of text to find in the primary string.

[compare] (optional) – By default, Instr is case-sensitive. By setting this argument you can make Instr Case insensitive:

Argument vb Value

Argument Integer Description vbBinaryCompare

MS Access Only. Uses information in the database to perform comparison.

Instr Start Position

The Instr start position allows you to indicate the character position where you will begin your search. Keep in mind however, the Instr output will always count from 1.

Here we set the start position to 3 to skip the first B:

The result is 6 because the second B is the 6th character in the string.

Case-Insensitive INSTR Test

By default, VBA treats “L” different from “l”. In other words, VBA is case-sensitive. This is true of all text functions. To make VBA case-insensitive, set the [compare] argument to 1 or vbTextCompare.

Alternatively, you can add Option Compare Text to the top of your code module:

Option Compare Text will impact all of the code in that module. I personally place this at the top of any module that deals with text because I never care about case differences.

InstrRev Function

The Instr Function searches from the left. Instead you can search from the right using the InstrRev Function. The InstrRev Function works very similarly to the Instr function.

Just like the Instr function this will return 1 because there is only one instance of “Look” in the text. But if we add a second “Look”, you’ll see that it returns the position of the right-most “Look”:

Next we will review more Instr examples.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

InString Examples

If String Contains Substring

Here we will use an If statement to test if a string contains a a substring of text:

Find Text String in a Cell

You can also find a string in a cell:

Or loop through a range of cells to test if the cells contain some text:

Find Position of a Character in a String

This code will find the position of a single character in a string and assign the position to a variable:

Search String for Word

This code will search a string for a word:

If Variable Contains String

This code will test if a string variable contains a string of text:

Instr and the Left Function

Instr can be used along with other text functions like Left, Right, Len, and Mid to trim text.

With the Left function you can output the text prior to a string of text:

Using Instr in Microsoft Access VBA

All of the above examples work exactly the same in Access VBA as in Excel VBA.

To learn more, read our article: VBA text functions

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

Источник

Метод Application.CheckSpelling (Excel)

Проверяет написание одного слова.

Синтаксис

expression. CheckSpelling (Word, CustomDictionary, IgnoreUppercase)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Word Обязательный String (используется только с объектом Application ). Слово, которое нужно проверить.
CustomDictionary Необязательный Variant Строка, указывающая имя файла пользовательского словаря для проверки, если слово не найдено в основном словаре. Если этот аргумент опущен, используется текущий указанный словарь.
IgnoreUppercase Необязательный Variant Значение true , чтобы Microsoft Excel пропускал слова, которые являются прописными буквами. Значение false , чтобы Microsoft Excel проверял слова, которые являются прописными буквами. Если этот аргумент опущен, будет использоваться текущий параметр.

Возвращаемое значение

Значение true , если слово найдено в одном из словарей; в противном случае — False.

Замечания

Чтобы проверить колонтитулы и объекты на листе, используйте этот метод для объекта Worksheet .

Чтобы проверить только ячейки и заметки, используйте этот метод с объектом, возвращаемым свойством Cells .

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

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

Источник

Как определить, является ли символ в ячейке числом, буквой или специальным символом с помощью VBA?

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

Цифры должны стать «N», буквы должны стать «L», а остальные символы должны остаться прежними.

Так, например, если A1 содержит «A35p @ 5», то вывод в B1 должен быть «LNNL @ N».

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

4 ответа

Хороший вопрос и вопрос. Я потратил некоторое время, чтобы предложить вам несколько вариантов:

1) Функциональность динамического массива Microsoft 365:

Если у вас есть Microsoft365, вы можете использовать:

Таким образом, процедура VBA будет обрабатывать каждый символ в каждой строке и сравнивать его с помощью оператора Like() :

Хотя оператор Like() выглядит как регулярное выражение, это не совсем то же самое. Однако мы могли бы также использовать объект RegeXp:

Давайте создадим функцию для преобразования текста в новый формат с Sub для запуска цикла. Затем давайте удалим диакритические знаки из букв и используем оператор Switch, чтобы проверить, является ли символ числом, буквой или другим: (Обратите внимание, что если символ не является ни числом, ни буквой, нам не нужно выполнять дополнительную проверку, чтобы посмотрите, не «что-нибудь еще» — потому что это все, что осталось!)

Я настоятельно рекомендую вам установить бесплатную и фантастическую надстройку RubberDuck для VBA.

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

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

Изучите приведенный ниже код, чтобы понять, что я имею в виду под этим.

Источник

Baykal555

1 / 1 / 0

Регистрация: 08.09.2017

Сообщений: 391

1

Проверка на наличие последовательности символов в ячейке

04.05.2020, 14:16. Показов 3199. Ответов 13

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем привет!

Подскажите, как осуществить проверку на наличие определенного порядка символов в ячейке. Например, ячейка содержит следующее: «длгрп09олтц» и нужно, если в ней содержится «грп» вывести Msgbox.
Я пробовал так:

Visual Basic
1
2
3
If cells (1,1) like "грп*"then
    Msgbox "Найдено"
End if

Но потом понял, что так можно найти только слова, но не последовательность символов.
Спасибо!



0



Narimanych

2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 14:19

2

Baykal555,
А почему не İnstr()?

Добавлено через 1 минуту

Visual Basic
1
2
3
If cells (1,1) like "*грп*"then
    Msgbox "Найдено"
End if



1



Baykal555

1 / 1 / 0

Регистрация: 08.09.2017

Сообщений: 391

04.05.2020, 14:23

 [ТС]

3

Narimanych,

Visual Basic
1
2
3
If Instr(cells(1,1),"грп") then 
Msgbox "Найдено"
end if

Тоже не подходит.



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 14:26

4

Baykal555,
Еще раз объясните, что нужно.

Добавлено через 1 минуту
У вас в ячейке А1 формулы нет?



0



1 / 1 / 0

Регистрация: 08.09.2017

Сообщений: 391

04.05.2020, 14:29

 [ТС]

5

Narimanych, к примеру, ячейка А1 содержит следующее значение: «длгрп09олтц». Нужно проверка на то, что, если эта ячейка содержит последовательность символов «грп», то появлялся msgbox.



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

04.05.2020, 14:36

6

Ну сегодня на форуме прямо Поле Чудес! Baykal555, может подскажете почему ТОЖЕ НЕ ПОДХОДИТ?
Может буква р набрана на английском? У меня работает

Добавлено через 7 секунд



0



1 / 1 / 0

Регистрация: 08.09.2017

Сообщений: 391

04.05.2020, 14:39

 [ТС]

7

Burk, прошу прощения. Дело в том, что я не учитывал регистр. Теперь все работает.
Большое спасибо!



0



Narimanych

2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 14:56

8

Лучший ответ Сообщение было отмечено Baykal555 как решение

Решение

Baykal555,
Вот 3 варианта определения вхождения последовательности «грп», в последовательность символов, находящуюся в ячейке «А1»

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
If InStr(Cells(1, 1).Value, "грп",) Then
MsgBox "Найдено"
End If
 
If Cells(1, 1).Value Like "*грп*" Then
    MsgBox "Найдено"
End If
 
With CreateObject("vbscript.regexp")
.Pattern = "грп"
    If .test(Cells(1, 1).Value) = True Then
    MsgBox "Найдено"
    End If
End With

Добавлено через 12 минут
Baykal555,

Вот без учета регистра:

Visual Basic
1
2
3
If InStr(1, Cells(1, 1).Value, "грп", 1) Then
MsgBox "Найдено"
End If



1



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

04.05.2020, 14:56

9

Лучший ответ Сообщение было отмечено Baykal555 как решение

Решение

Ещё два экзотических варианта, где регистр, не важен

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
If Not [A1].Find("грп", , xlValues, xlPart) Is Nothing Then
   MsgBox "Найдено"
End If
 
If Not Cells(1).Find("*грп*", , xlValues) Is Nothing Then
   MsgBox "Найдено"
End If
 
If Application.CountIf([A1], "*грп*") Then
   MsgBox "Найдено"
End If



1



Narimanych

2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 15:06

10

Baykal555,
Так в принципе тоже можно…

Visual Basic
1
2
3
4
5
6
7
8
9
Option Compare Text
 
If InStr(Cells(1, 1).Value, "грп",) Then
MsgBox "Найдено"
End If
 
If Cells(1, 1).Value Like "*грп*" Then
    MsgBox "Найдено"
End If



1



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

04.05.2020, 15:14

11

Narimanych, Так нельзя (строка #3) последняя запятая лишняя

Добавлено через 4 минуты
Если при использовании InStr — нужно не зависеть от регистра, то синтаксис будет такой (Start указывается обязательно, константу vbTextCompare можно заменить на её значение 1 )

Visual Basic
1
2
3
If InStr(1, Cells(1, 1), "грп", vbTextCompare) Then
   MsgBox "Найдено"
End If

или так

Visual Basic
1
2
3
If InStr(LCase(Cells(1, 1)), "грп") Then
   MsgBox "Найдено"
End If

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



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 15:20

12

pashulka,
енто я када из верхнего показанного варианта

Цитата
Сообщение от Narimanych
Посмотреть сообщение

If InStr(1, Cells(1, 1).Value, «грп», 1) Then

вырезал- перерезал….



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

04.05.2020, 15:29

13

Narimanych, Так понятно, что это очепятка
Просто получилось двусмысленно, типа так можно, а по факту синтаксическая ошибка, прям как у меня в соседней теме



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,141

04.05.2020, 15:30

14

pashulka,

Цитата
Сообщение от pashulka
Посмотреть сообщение

по факту синтаксическая ошибка

Стареем…



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

04.05.2020, 15:30

Помогаю со студенческими работами здесь

Проверка на наличие символов в строке
Есть изначальный код в htaccess:

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$…

Проверка пароля на наличие символов
День добрый. Есть примерно такой код
if (preg_match(‘/^*$/u’, $email)) die(&quot;Пароль должен…

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

Проверка строки на наличие русских символов
Ребята помогите пожалуйста! Уже второй день мучаюсь, ситуация такая есть форма регистрации, на…

Проверка строки на наличие букв и символов
Добрый вечер!

Как в android проверить editText на наличие букв и символов?
Мне нужно, что бы…

Проверка элемента на наличие сторонних символов
Есть массив, состоящий из цифр 0-9 :

char numbers_arab = {
‘0’ , ‘1’ , ‘2’ , ‘3’ , ‘4’…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

14

Like this post? Please share to your friends:
  • Vba excel проверка объединения ячеек
  • Vba excel проверка на целое число
  • Vba excel проверка на пустую строку
  • Vba excel проверка на пустое значение
  • Vba excel проверка значения на дату