Страницы: 1
RSS
VBA: вытащить часть строки, Mid, Len, InStr
 
Допустим, в первом столбце имеется перечень литературных произведений:

роман "Преступление и наказание"
поэма "Евгений Онегин"
пьеса "Вишневый сад"
и т.д.

Хочу по нажатию кнопки получить первое название (без кавычек и всего лишнего) в ячейке, к примеру, B1. Написал для модуля такой код:
Код
Sub PickAName_Click()
     Dim CleanName As String
     Dim SourceCell As Range
     Dim NameCell As Range
     Set SourceCell = ActiveWorkbook.Sheets("Лист1").Cells(1, 1)
     CleanName = Mid(SourceCell, InStr(SourceCell, """") + 1, Len(SourceCell) - 1)
     Set NameCell = ActiveWorkbook.Sheets("Лист1").Cells(1, 2)
     NameCell.Value = CleanName
Sub
Левую часть содержания он отрезает, а правую (вторую кавычку) - нет. В результате чего я получаю Преступление и наказание"

Почему-то уменьшение на единицу в сочетании с Len, находящегося в составе Mid, не работает. Почему? Как мне отрезать последнюю кавычку?
Изменено: somebox - 11.06.2019 10:52:58
 
задействовать только эти ф-ции?  Split хорошо бы подошел. ;)
в последнем аргументе отнимите еще поиск первой кавычки.
Изменено: V - 11.06.2019 11:19:06
 
V, если есть еще какое-то решение, я готов выслушать.

Цитата
V написал:
в последнем аргументе отнимите еще поиск первой кавычки
Где именно? Не могу сообразить.
 
Код
Len(SourceCell) - 1-InStr(SourceCell, """")
но возможно 1 нужно будет подкорректировать +-1.
другое решение
Код
CleanName = Split(SourceCel,"""")(1)
Изменено: V - 11.06.2019 11:29:51
 
Решение со Split мне нравится больше. Почитаю про эту функцию побольше. Спасибо.

Один вопрос. Что делает 1 в скобках после функции? Почему она записывается таким образом?

Кажись, догадался. Это индекс значения в массиве.
Изменено: somebox - 11.06.2019 11:53:42
 
Цитата
somebox написал:
Кажись, догадался. Это индекс значения в массиве.
Оно самое. ;)
Страницы: 1
Наверх