我必须在Excel VBA中设计一个函数,它将 sheet1 中的源行号和 sheet2 中的目标行号作为输入参数。但是必须复制的列在两行中都是相同的,即从第1列到第20列。
我试过这样的话:
Function CopyRow(ByVal rowA, ByVal rowB)
Rows(rowA).Select
Selection.Copy
Sheets("Sheet2").Select
Rows(rowB).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End Function
但它正在复制整行。给我一个替代的简单方法来做到这一点?
请帮我解决这个问题。提前谢谢。
答案 0 :(得分:0)
尝试Range("A" & rowA & ":T" & rowA).Select
答案 1 :(得分:0)
您的代码正在复制整行,因为Rows(rowA).Select
正在选择整个rowA
我同意之前的评论,它更适合Sub
而不是Function
,因为没有返回值。当您尝试更改工作表上的某些内容时,不应使用Functions
- 有人可能会输入=Co
并将您的CopyRow
视为可用的Function
。它不起作用 - 如果您在工作表上输入Function
,它将返回0而不进行复制/粘贴。
如果没有选择任何工作表或范围,这样做会更快。
Function CopySht1RowAtoSht2RowB(rowA, rowB)
Sheets("Sheet1").Range(Cells(rowA, 1).Address, Cells(rowA, 20).Address).Copy _
Sheets("Sheet2").Range(Cells(rowB, 1).Address, Cells(rowB, 20).Address)
End Function
您可以从其他程序调用它,在本例中使用
Sub Wrapper()
Sub Wrapper()
Call CopySht1RowAtoSht2RowB(1, 2)
End Sub