Страницы: 1
RSS
Проверка ячейки на наличие подстроки (VBA)
 

Добрый день.

Я использую функцию Split по первому столбцу, отсекая “закрытие реестра”. Но когда цикл доходит до ячейки, где нет фразы “закрытие реестра”, то есть ближайшая это cells (3,1), то закономерно всплывает Debug. Какое мне необходимо задать условие, чтобы он проскакивал ненужное без ошибки?

Файл прилагаю.

Спасибо.

 
I_Creator, здравствуйте. Прикрепите код к сообщению (кнопка для форматирования кода <…>)
Обработка ошибок в коде VBA
Изменено: Jack Famous - 23.10.2019 11:41:24
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Можно пропускать ошибки, а можно сперва проверить наличие этого разделителя.
 
Код
Sub rer()

Dim Prob As String, Zakr As String
Dim LastRow As Long, LastCol As Long, i As Long

Prob = " "
Zakr = "закрытие реестра "

LastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
LastCol = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1

Cells(LastRow + 6, 1) = "Дата закрытия реестра"
Cells(LastRow + 6, 2) = "Дивиденд (руб.)"
Cells(LastRow + 6, 5) = "Год"
Cells(LastRow + 6, 6) = "Дивиденд (руб.)"

For i = 1 To LastRow

Cells(LastRow + 6 + i, 1) = Split(Cells(i + 1, 1), Zakr)(1)


Next i

Cells(24, 1) = Split(Cells(2, 1), "закрытие реестра ")(1)
Cells(24, 2) = Split(Cells(2, 2), " ")


End Sub
Изменено: I_Creator - 23.10.2019 11:39:43
 
Цитата
Hugo написал:
Можно пропускать ошибки, а можно сперва проверить наличие этого разделителя.
Согласен. Только не могу понять как это сделать. Если подскажите, буду благодарен.
 
I_Creator,
попробуйте так:
+ добавил в предыдущий коммент ссылку на матчасть
Изменено: Jack Famous - 23.10.2019 12:05:27
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
+ добавил в предыдущий коммент ссылку на матчасть
Спасибо большое.

Буду разбираться.
 
I_Creator, новый код попробуйте, а потом разбирайтесь  ;)

Возможное название для темы: "Обработка ошибок в цикле VBA"
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Hugo написал:
Можно пропускать ошибки, а можно сперва проверить наличие этого разделителя.
Я бы выбрал второе: если разделитель присутствует - Split.
Зачем доводить до греха ошибки? )
 
I_Creator,
Цитата
Юрий М: Я бы выбрал второе
поправил код в #6 - так действительно правильнее…
Хотя там вообще несколько вопросов к алгоритму)))
Изменено: Jack Famous - 23.10.2019 12:07:43
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
А название темы будем менять? Ну не дебаг же надо пропускать!!!!
По вопросам из тем форума, личку не читаю.
 
Будем. На что? )
 
БМВ, Юрий М, #8
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
проверить наличие этого разделителя
Используйте InStr(1, Cells(lR + i, 1), Zakr)>1
 
Джек, я видел в #8, но вариант не очень: ошибки ведь можно избежать - тогда и обрабатывать будет нечего :)
 
Цитата
Kuzmich написал:
Используйте InStr(1, Cells(lR + i, 1), Zakr)>1
Или Like.
 
Цитата
Юрий М: ошибки ведь можно избежать
"Проверка ячейки на наличие подстроки"  ;)
Цитата
Kuzmich: Используйте InStr
Цитата
Юрий М: Или Like
или Split, как я и сделал — почему нет?…  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Отходил. Увидел, что тему уже сменили.

Всем спасибо. Теперь будет над чем подумать.:)
Страницы: 1
Наверх