Я пишу довольно простой макрос в VBA, и я впервые пишу что-нибудь в нем, поэтому я много борюсь. Я полностью знаю логику того, что мне нужно сделать, я просто не получаю синтаксис VBA. Я хочу перебирать каждую ячейку в строке, если первая ячейка в этой строке содержит определенную подстроку. Внутри цикла for, я хочу добавить эту подстроку в конец каждой ячейки в строке, если эта ячейка не пуста. Я не получаю мимо моего для цикла декларацииПростая петля, повторяющаяся над строкой ActiveCell в VBA
Sub changeRow()
Dim txt As String
txt = Cells(ActiveCell.Row, 1)
If InStr(1, txt, "123") > 0 Then
For Each b In Range(Rows(ActiveCell.Row).Select)
If Len(b.Value) > 0 Then
b.Value = b.Value & " 123"
End If
Next b
End If
End Sub
Что 'b' в вашем объявлении, оно должно быть' Range'? – bonCodigo
Да, извините за ужасное имя переменной. Я предположил, что b должна быть ячейкой, выбранной на каждой итерации. – Xonal
Если у вас есть заголовки в столбцах, вы также можете использовать '.AutoFilter' для фильтрации ячеек в строках поиска, а затем циклически пройти через отфильтрованный диапазон. Это будет намного быстрее! Представьте это. Ваша колонка Excel содержит 50 тыс. Записей. И, допустим, только две ячейки имеют «123». В текущем сценарии ваш цикл будет выполняться 50k раз, чтобы проверить, имеет ли ячейка '123' или нет. Если вы используете Autofilter, тогда ваш цикл будет работать только 2 раза !!! –