VBA копировать вставить диапазон каждый 7-й ряд, 7 раз - PullRequest
0 голосов
/ 01 мая 2018

Добрый день,

После долгих часов поиска правильного кода для того, что я пытаюсь сделать, мне, наконец, приходится спрашивать экспертов здесь. Я ужасно новичок в VBA (но теперь меня это покоряет!).

Я пытаюсь скопировать диапазон из 3 ячеек данных, которые я ввожу ежедневно (я ввожу данные в столбцы J: L), затем вставляю их 7 раз, каждую седьмую строку ниже (поэтому я копирую / вставляю данные понедельника до следующих 7 понедельников, в соответствующих строках ниже). Каждый день меняется, как и место вставки (данные за вторник будут скопированы, затем вставлены в следующие 7 строк вторника ниже и т. Д.). Вводимые мной данные всегда будут столбцами J: L. Затем, когда данные вставлены, у меня есть кнопка, которая использует эти данные и очищает их. Таким образом, столбцы J: L всегда очищены, пока я не добавлю данные в следующую строку из 3 ячеек.

Любая помощь приветствуется, потому что я просто в тупике. Я перепробовал несколько вариантов «lastrow», но не нашел подходящего для меня кодирования (из-за того, что собирал информацию здесь, но не смог заставить ее работать).

Я попытался добавить снимок здесь, но, видимо, я слишком нуб для этого даже: / Идея кажется простой, так что, надеюсь, будет простое решение.

Спасибо за вашу удивительность! Отредактировано (извините за то, что мой первый запуск на этом сайте был настолько сложным: /)

Sub CopyPaste()  
'  
' CopyPaste Macro  
' copies and pastes range for 8 total weeks  
'  
Dim lastrow As Long  
lastrow = Range("J" & Rows.Count).End(xlUp).Row  
'  
    Selection.Copy  
    Range("J27").Select  
    ActiveSheet.Paste  
    Range("J34").Select  
    ActiveSheet.Paste  
    Range("J41").Select  
    ActiveSheet.Paste  
    Range("J48").Select  
    ActiveSheet.Paste  
    Range("J55").Select  
    ActiveSheet.Paste  
    Range("J62").Select  
    ActiveSheet.Paste  
    Range("J69").Select  
    ActiveSheet.Paste  
    Application.CutCopyMode = False  
End Sub

1 Ответ

0 голосов
/ 01 мая 2018

Посмотрите, поможет ли это. Я предвижу проблему, хотя в том случае, если после того, как вы скопируете значения, например, в понедельник, последней использованной строкой будет строка 70 или что-то в этом роде.

Sub x()

Dim i As Long, lastrow As Long

lastrow = Range("J" & Rows.Count).End(xlUp).Row

For i = 1 To 7
    Cells(lastrow, "J").Resize(, 3).Offset(7 * i).Value = Cells(lastrow, "J").Resize(, 3).Value
Next i

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