Как скопировать одну ячейку (А1), вставить ее 640 раз, скопировать следующую ячейку (А2), вставить ее 640 раз непосредственно ниже - PullRequest
0 голосов
/ 21 апреля 2020

Впервые на VBA, и я пытаюсь написать макрос, который будет копировать 1 ячейку в столбце L, вставить ее 640 раз в столбец A и повторить это 176 раз, так что после каждого цикла 640 копирования / вставки макрос будет перейти к следующей ячейке в столбце L, промыть и повторить.

То, что я получил до сих пор, это код ниже, который, по сути, делает то, что я хочу, но только дважды, - я думаю, что разрыв в том, что я не знаю, как правильно применять oop дважды (один раз, чтобы сказать, скопировать 640 раз, а второй, чтобы сказать, как только вы закончили копирование 640 раз, go в следующую ячейку в столбце L и начать снова).

Dim i As Integer
For i = 1 To 2
    ActiveCell.Offset(1, 11).Range("A1").Select
    Selection.Copy
    ActiveCell.Offset(0, -11).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(0, 11).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(1, -11).Range("A1").Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveSheet.Paste
Next i
End Sub

Спасибо заранее за помощь и извинения, если мне не хватает ветки, на которую уже был дан ответ (перебрал немало, но не могу ее найти).

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать al oop вот так

Sub CopyDown()

    Const NUM_ROWS As Long = 5 'or whatever
    Dim c As Range, rng As Range, i As Long

    Set c = Range("L1")
    Set rng = Range("A1").Resize(NUM_ROWS, 1)

    For i = 1 To 5 'or whatever
        rng.Value = c.Value
        Set rng = rng.Offset(NUM_ROWS, 0)
        Set c = c.Offset(1, 0)
    Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...