如何在vba中复制范围?

时间:2009-01-20 16:15:30

标签: excel vba excel-vba

我正在尝试这个,但它给了我一个类型不匹配。还有另一种方法吗?我假设rSource不是来自活动表。

另外,我只需要价值观。

编辑:rSource应该有行和列。它也将是一个连续的区域。

编辑:完成此操作后,我应该能够独立过滤每个范围。

Function CopyRange(rSource As range) As range
    ' Declarations
    Dim rTemp As range

    ' Create new range starting at cell A1
    Set rTemp = Range(Cells(1, 1), Cells(rSource.Rows.Count, rSource.Columns.Count))

    rTemp.Value = rSource.Value

    Set CopyRange = rTemp
End Function

3 个答案:

答案 0 :(得分:1)

我相信你的功能很好。

我创建了一个teststub:

Function Check()
  Dim x As Range
  Dim c As Range
  Set c = Range("A1", "A2")
  Set x = CopyRange(c)
End Function

将单元格A1设置为2,将A2设置为3。

踩到这个,并使用以下方法评估x变量:
?x.Range( “A1”)
(我的格式与?x不匹配。)

我得到2。

希望有所帮助。

答案 1 :(得分:1)

假设此代码位于Worksheet的代码模块中,那么它应该可以正常工作。我只是尝试了它并且它运行正常(假设传递给函数的范围是连续的)。

或者,试试这个: -

Function CopyRange(rSource As Range) As Range

   Call rSource.Copy(Cells(1, 1))

   Set CopyRange = Range(rSource.Address).Offset(1 - rSource.Row, 1 - rSource.Column)

End Function

答案 2 :(得分:0)

这是一个连续的区域吗?它是否被空细胞所包围?如果是这样,您应该能够使用currentregion属性来设置范围。

我在想你收到错误的原因是因为你没有在你的第一个单元格声明中设置rSource。