Задать вопрос
Hollib
@Hollib

Как сделать поиск в ячейке по знаку " с помощью VBA?

Всем привет
Как можно заставить VBA найти знак "
У меня в ячейки есть текст:
ДООП "Лабаратория Хлеба" естественно-научной направленности

Надо что бы она в соседнюю ячейку написал:
ДООП "Лабаратория Хлеба"

Игрался с этим кодом:
Sub SokrNapravlenie()
Dim fulname
Dim FIO
    fulname = Cells(3, 21)
    FIO = Left(fulname, InStr(1, fulname, " "))
    fulname = Right(fulname, Len(fulname) - Len(FIO))
    FIO = FIO & Left(fulname, InStr(1, fulname, " "))
    fulname = Right(fulname, Len(fulname) - InStr(1, fulname, " "))
    FIO = FIO & Left(fulname, InStr(1, fulname, " "))
    Cells(3, 22) = FIO
End Sub


Но проблема в том, что если поместить в скобки слово больше двух или одно то результат уже не тот.
Может есть способ этот код искать не по пробелам а по знаку " ?
  • Вопрос задан
  • 233 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Для поиска двойной кавычки используется строковый литерал из четырёх двойных кавычек
Instr(start, variable, """")
Первая и последняя обрамляют литерал, вторая и третья образуют удвоенную двойную кавычку, которая интерпретируется как квотированная/экранированная.

Есть и более простой способ.
Instr(start, variable, Chr(34))

-=о=--=о=--=о=--=о=--=о=--=о=--=о=-

У меня в ячейки есть текст:
ДООП "Лабаратория Хлеба" естественно-научной направленности

Надо что бы она в соседнюю ячейку написал:
ДООП "Лабаратория Хлеба"

Если ты точно знаешь, что значение содержит не менее 2 двойных кавычек, и нужно отделить именно до второй включительно, можно так:
Function get2dquotes(source As String) As String
    Dim tmp() As String
    tmp = Split(source, Chr(34))
    get2dquotes = tmp(0) & Chr(34) & tmp(1) & Chr(34)
End Function

И соответственно потом B1=get2dquotes(A1).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Обработайте строку регулярным выражением методами RegExp в VBA:
\w+\s"(?<=").*(?=")"
https://regex101.com/r/14oM7H/1

PS: Насчет работы регулярок в VBA - не имею представления, гуглите самостоятельно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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