将.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个缺失值。