У меня есть сценарий VBA, который петли следующим образом:изменить способ VBA данные сценария пасты
Если значение ячейки 3, то он будет вставлять строки 1 в 3 раза, строка 2 3 раза, и т.д..
Текущий диапазон пасты выглядит следующим образом:
Line 1
Line 1
Line 1
Line 2
Line 2
Line 2
Line 3
Line 3
Line 3
мне было интересно, может ли сценарий VBA вставить данные, так что данные таким образом:
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
Line 1
Line 2
Line 3
VBA скрипт вождения выше следующим образом:
Sub CopyJournalLines2()
Dim wsInv As Worksheet
Dim i As Integer
Dim j As Integer
Dim iStartRow As Integer
Dim iNumCopies As Integer
Dim iCopyRow As Integer
Dim CopyRange As Range
Dim PasteRange As Range
Set wsInv = ThisWorkbook.Sheets("Invoice Upload")
With wsInv
.Rows("17:5000").Cells.Clear
iStartRow = 17
iNumCopies = .Range("O12").Value
For i = 1 To 4
Set CopyRange = .Range(.Cells(i, 1), .Cells(i, 17))
iCopyRow = iStartRow + (i - 1) * iNumCopies
Set PasteRange = .Range(.Cells(iCopyRow, 1), .Cells(iCopyRow, 17))
PasteRange.Formula = CopyRange.Formula
For j = 2 To iNumCopies
iCopyRow = iStartRow + j - 1 + (i - 1) * iNumCopies
.Range(.Cells(iCopyRow, 1), .Cells(iCopyRow, 17)).FormulaR1C1 = PasteRange.FormulaR1C1
Next j
Next i
End With
End Sub
Спасибо так много Скотта. Не могли бы вы рассказать мне, как изменить переменную, если я меняю ее на 2 вместо 3 (чтобы скопировать количество строк)? –
@YameenSarwar - количество копий получается из 'Range (« O12 »)' как вы в исходном коде, поэтому просто настройте это значение перед запуском макроса. –
Привет Скотт. Еще раз спасибо за быстрый ответ. Вы знаете, есть ли способ сохранить исходное форматирование копируемых строк? Также вы можете рассказать мне, что это значит: Range («A1: Q4»). FormulaR1C1 –