如何复制vba的范围?

我正在尝试,但它给我一个types不匹配。 有没有另外一种方法来做到这一点? 我假设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 

我相信你的function很好。

我创build了一个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。

进入这个步骤,并使用以下命令评估xvariables:
?x.Range( “A1”)
(我和你的types不匹配。

我得到2。

希望有所帮助。

假设这个代码是在工作表的代码模块中,那么它应该工作得很好。 我只是试了一下,它运行良好(假设范围传递给函数是连续的)。

另外,试试这个: –

 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 

这是一个连续的区域? 它是由空单元格吗? 如果是这样,你应该能够使用currentregion属性来设置范围。

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