我需要将一行数据从一个工作表粘贴到另一个n
次。我想通过输入框输入输入n
。
有没有关于如何使用VBA执行此操作的指示?
答案 0 :(得分:0)
这是一个简单的骨头宏。请注意,您需要调整工作表名称是必需的。
Sub test()
Dim dataWS As Worksheet, copyToWS As Worksheet
Dim copyRow&, noCopies&, copySheetLastRow&, i&
Set dataWS = Sheets("Sheet1")
Set copyToWS = Sheets("Sheet2") ' Change these as required.
copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row
If copySheetLastRow > 1 Then
copySheetLastRow = copySheetLastRow + 1
End If
copyRow = InputBox("What row would you like to copy?")
noCopies = InputBox("How many times do you want it copied?")
For i = 1 To noCopies
With dataWS
copyToWS.Rows(copySheetLastRow).Value = .Rows(copyRow).Value
End With
copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row + 1
Next i
End Sub
从您的数据WS中获取所选行,并将其放入"中的下一个可用行;复制到"工作表。
编辑:根据您的问题,此代码可确保复制到的工作表将数据放在下一个可用行(从第1行开始的下一个空行)。
copySheetLastRow = copyToWS.Cells(copyToWS.Rows.Count, 1).End(xlUp).Row
这使用copyToWS
工作表,并获取最后使用的行。 copyToWS.Rows.Count
计算工作表中的行数,然后查看下一个非空行(.End(xlUp)
)。 (这相当于从最后一行开始,在A列中,然后按CTRL + [向上箭头]。
If copySheetLastRow > 1 Then
copySheetLastRow = copySheetLastRow + 1
End If
如果确定最后一行大于第1行,则向其添加一行,使其变为#+ 1.这是因为如果最后一行是第1行,则表示没有信息。在表单中。但是,如果最后一行被确定为4,那么这意味着第4行中有数据。我们在这个数字上加1,所以我们不会覆盖该行中的数据。