将.Range作为参数传递VBA

3

嗨,请帮我完成以下内容翻译:

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

我不知道自己出了什么问题,

谢谢,

2个回答

2

C已经是一个Range对象,所以没有必要将其传递给Range()函数(该函数无论如何都期望一个字符串)来创建它。

更改为:

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

To:

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

谢谢,当我调用select_data时,.range("B6:B16") 仍然出现错误...无效或未经限定的引用。 - AL92
你在 .Range(...) 前面使用了 .,我猜想这是因为你有一个 With Sheets(...) 块,只是没有显示出来。如果你想从活动工作表中传递一个范围,只需在传递范围时删除 . 即可。否则,请在前面加上你的工作表名称:Call select_data(Sheets("mysheet").Range("B6:B12")) - Bond

0
你把范围对象Range object和它的地址属性Address property混淆了。
方法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

方法二:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接