Vba 交换两个范围

Vba 交换两个范围,vba,excel,Vba,Excel,我正在尝试编写用于交换两个范围的代码: 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 = holde

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

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
仅更改变量
holder
range1
range2
引用的范围。它实际上不会将这些引用中包含的数据从一个范围复制到另一个范围

下面的代码将执行实际复制,同时还将处理运行时错误

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
我会尝试这种方式(对不起,未经测试-从Chrombook上书写:)


你可以说: 保持架=范围1 范围2=范围1 保持架=范围2


与pnuts回答的问题不太相关,但我认为这对您的应用程序会有帮助。

我假设这没有经过测试?我假设这没有经过测试?@ashleedawg无需在3年后进行假设。第一行写的是黑白相间的。
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