交换两个范围

我正在尝试编写交换两个范围的代码:

Sub SwapRanges() Dim range1 As Range Dim range2 As Range Dim holder As Range range1 = Range("D7:D12") range2 = Range("E7:E12") holder = Range("F7:F12") Set holder = range1 Set range1 = range2 Set range2 = holder End Sub 

但得到运行时错误91

错误的原因是您在分配范围时没有使用Set命令。 另外,明白这个代码:

 Set holder = range1 Set range1 = range2 Set range2 = holder 

只改变variablesholderrange1range2引用的范围。 它实际上并不将这些引用中包含的数据从一个范围复制到另一个范围。

下面的代码将执行实际的复制,同时也解决运行时错误。

 Sub SwapRanges() Dim range1 As Range Dim range2 As Range Dim holder As Range Set range1 = Range("D7:D12") Set range2 = Range("E7:E12") Set holder = Range("F7:F12") range1.Copy holder range2.Copy range1 holder.Copy range2 End Sub 

我会尝试这种方式(对不起,没有testing – 从一个Chrombook写:)

 Sub SwapRanges() Dim range1 As Range Dim range2 As Range Dim holder() as variant Set range1 = Range("D7:D12") Set range2 = Range("E7:E12") holder = range1 range1 = range2 range2 = holder End Sub 

而不是应付,你可以说:holder = range1 Range2 = range1 Holder = range2

不是真的与问题pnuts相关的回答,但我认为这将有助于您的应用程序。