将.Range作为parameter passing给VBA

嗨请帮我下面,

Sub movedata() Call select_data(.Range("B6:B12")) End Sub Function select_data(C As Range) Worksheets("sheet1").Range("I6:I16") = Worksheets("Sheet1").Range(C).Value End Function 

我看不出我要去哪里错了,

谢谢,

C已经是一个Range对象,所以不需要将它传递给Range()函数(无论如何需要一个string)来创build它。

更改:

 Worksheets("sheet1").Range("I6:I16") = Worksheets("Sheet1").Range(C).Value 

至:

 Worksheets("sheet1").Range("I6:I16") = C 

您将该范围作为Range对象与其Address属性混淆。

方法1:

 Sub movedata() Call select_data(Range("B6:B12").address) End Sub Function select_data(C As string) with Worksheets("sheet1") .Range("I6:I16") = .Range(C).Value end with End Function 

方法2:

 Sub movedata() Call select_data(Worksheets("sheet1").Range("B6:B12")) End Sub Function select_data(C As range) C.parent.Range("I6").resize(C.rows.count, C.columns.count) = C.Value End Function 

如果将B6:B12的值填入I6:I16的单元格中,会有一些困难。 似乎有4个缺失值。