Пытаюсь написать код по замене трех последних символов в первой строке на рандомные при определенном условии. Но, видимо, не правильно указываю диапазон выдаёт ошибку 91. Object variable or With block variable not set
[vba]
Код
Sub Cheken() Dim ReCheken As Range Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value RX = Range("V1") For i = 2 To Range(ReCheken, 1) If ReCheken = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(ReCheken.Row, 1) = Replace(Cells(ReCheken.Row, 1), "000", RX) End If Next i End With End Sub
[/vba]
Добрый день!
Пытаюсь написать код по замене трех последних символов в первой строке на рандомные при определенном условии. Но, видимо, не правильно указываю диапазон выдаёт ошибку 91. Object variable or With block variable not set
[vba]
Код
Sub Cheken() Dim ReCheken As Range Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value RX = Range("V1") For i = 2 To Range(ReCheken, 1) If ReCheken = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(ReCheken.Row, 1) = Replace(Cells(ReCheken.Row, 1), "000", RX) End If Next i End With End Sub
Код должен анализировать 19 строку на наличие в строке записи "Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту " и в первом столбце заменяет три последних символа на рандомные, из ячейки V1 и так с каждой строкой. Значение в ячейке V1 записал формулой.
Код должен анализировать 19 строку на наличие в строке записи "Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту " и в первом столбце заменяет три последних символа на рандомные, из ячейки V1 и так с каждой строкой. Значение в ячейке V1 записал формулой.ИгорьВтанке
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value RX = Range("V1") For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(i, 18) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub
[/vba]
Не уверена, что правильно поняла [vba]
Код
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value RX = Range("V1") For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(i, 18) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub
Спасибо! Сразу возник другой вопрос: у меня по задумке, значение "RX" для каждой изменяемой строки должен генерироваться разный, а сейчас он одинаковый. Как решить этот вопрос? Формулу генерации засунуть в внутрь цикла IF?
Спасибо! Сразу возник другой вопрос: у меня по задумке, значение "RX" для каждой изменяемой строки должен генерироваться разный, а сейчас он одинаковый. Как решить этот вопрос? Формулу генерации засунуть в внутрь цикла IF?ИгорьВтанке
Попытался формулу вписать в макрос, но выдает ошибку. Что я делаю не так?
[vba]
Код
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value
For i = 2 To UBound(ReCheken, 1) RX = Range.FormulaR1C1 = _ "=MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)&MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)&MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)" If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(i, 1) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub
Попытался формулу вписать в макрос, но выдает ошибку. Что я делаю не так?
[vba]
Код
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value
For i = 2 To UBound(ReCheken, 1) RX = Range.FormulaR1C1 = _ "=MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)&MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)&MID(R1C23,RANDBETWEEN(1,LEN(R1C23)),1)" If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 Cells(i, 1) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub
Переменная RX для чего у Вас? Вы ранее в нее значение V1 передавали, теперь хотите вместо значения формулу, которая соседнюю (пустую) ячейку использует Не понял логику, поясните
Переменная RX для чего у Вас? Вы ранее в нее значение V1 передавали, теперь хотите вместо значения формулу, которая соседнюю (пустую) ячейку использует Не понял логику, пояснитеSerge_007
Sub Cheken() Dim ReCheken Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then Cells(i, 18) = Replace(Cells(i, 1), "000", Mid("ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789", Int((35 * Rnd) + 1), 3)) End If Next i End With End Sub
[/vba]
[vba]
Код
Sub Cheken() Dim ReCheken Dim i As Long With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then Cells(i, 18) = Replace(Cells(i, 1), "000", Mid("ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789", Int((35 * Rnd) + 1), 3)) End If Next i End With End Sub
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long, alph As String alph = "ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789" Randomize With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 RX = Mid(alph, Int((35 * Rnd) + 1), 1) & Mid(alph, Int((35 * Rnd) + 1), 1) & Mid(alph, Int((35 * Rnd) + 1), 1) Cells(i, 18) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub
[/vba] но проверки на повторы нет
Вариант [vba]
Код
Sub Cheken() Dim ReCheken Dim RX As Variant Dim i As Long, alph As String alph = "ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789" Randomize With Sheets("Лист1") i = .UsedRange.Row + .UsedRange.Rows.Count - 1 ReCheken = .Range(.Cells(1, 19), .Cells(i, 19)).Value For i = 2 To UBound(ReCheken, 1) If ReCheken(i, 1) = "<<<< Отсутствует в базе данных, необходимо обратиться к менеджеру по продукту >>>>" Then ' замена трех последних значений на случайный код из ячейки V1 RX = Mid(alph, Int((35 * Rnd) + 1), 1) & Mid(alph, Int((35 * Rnd) + 1), 1) & Mid(alph, Int((35 * Rnd) + 1), 1) Cells(i, 18) = Replace(Cells(i, 1), "000", RX) End If Next i End With End Sub