@Kotar4ik

В чем ошибка макроса VBA по обработке массива ячеек?

В чем может быть ошибка макроса? Сам макрос работает, но как-то непонятно. Он должен искать каждое значение из соседнего столба (справа) на 2 страничке и найдя ячейку с этим значением вставлять значение из столбца массива в ячейку правее на 2 ячейки. Но он первое значение вставляет вообще неизвестно куда, а остальные вставляет со сдвигом на 1 ячейку вверх.

Sub Macro()
 For Each c In Worksheets("Sheet1").Range("AR2:AR31").Cells
    a = c.Value
    ActiveCell.Offset(0, 1).Activate
    b = ActiveCell.Value
    Sheets("Sheet2").Select
    Range("D14:D52").Select
    Selection.Find(What:=b, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    ActiveCell.Offset(0, 2).Activate
    ActiveCell.Value = a
    Application.CutCopyMode = False
    Sheets("For_tool").Select
    c.Select
    ActiveCell.Value = b
 Next
End Sub
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
1- Установите в начале цикла рабочую ячейку активной. c.Select сразу после строки For Each
2 - Удалите команду Application.CutCopyMode = False. Вы не выполняете copy/paste.
3 - в команде Sheets("For_tool").Select измените название листа на Ваше исходное Sheet1
4 - команда ActiveCell.Value = b лишняя, т.к. перезаписывает данные
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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