2013-12-10 123 views
0

我要设计在Excel VBA函数这需要在Sheet2中在工作表Sheet1 目的行号的源行号作为输入参数的特定范围内。但其具有要复制的列是在两行是相同的,即,从第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 

但它复制整个行。给我一个替代和简单的方法来做到这一点?

请帮我解决这个问题。提前致谢。

+1

快速的问题,这种情况下Sub Wrapper()。为什么你需要使用'Function'而不是'Private Sub'。根据你的代码,它适合'Sub'而不是'Function'。有什么特别的原因吗? – L42

+2

@ L42,你应该说更难 - 在这种情况下没有理由使用'Function',它应该是一个'sub'!代码在IDE中调用时无关紧要,但它不会返回任何值。 –

+0

@KazJaw肯定的事情。 :)我只是想获得更多的信息来衡量海报的理解水平,所以我们可以更好地解释它:) – L42

回答

0

您的代码复制整行,因为Rows(rowA).Select被选中整个rowA

我与前面的评论说,这是更适合一个SubFunction同意,因为没有返回值。 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() 
    Call CopySht1RowAtoSht2RowB(1, 2) 
End Sub 
0

尝试Range("A" & rowA & ":T" & rowA).Select