我有3个工作表,我正在尝试根据另外两个不同工作表中的范围为其中一个工作表上的变量分配范围。这是我的代码:
Sub Combine()
Dim range1 As Range
Dim range2 As Range
Dim ID As Range
Set range1 = Worksheets(3).Range("A2:A")
Set range2 = Worksheets(4).Range("A2:A")
Set newRng = Worksheets(6).Range(range1, range2)
End Sub
我要回来了
运行时错误'1004'
有什么建议吗?
答案 0 :(得分:1)
范围不能跨越多个工作表。
这可能有效,具体取决于您最终需要做的事情:
Set newRng = Worksheets(6).Range(range1.Address, range1.Address)
但是,由于这些范围在您的示例中具有相同的地址,我认为您想要的是不组合它们的Range
对象,但是其他一些数据结构,如数组,集合或字典。
注意您的范围无效,Range("A2:A")
无效,因此您需要解决此问题。有关查找范围中“最后”单元格的可靠方法,请参阅here。我已修改它以引入整个A列(A1除外),但您可能希望对其进行微调。
newRange
必须是不同的数据类型,才能在不引发不匹配错误的情况下工作,例如Collection
:
Sub Combine()
Dim coll as New Collection
Dim range1 As Range
Dim range2 As Range
Dim ID As Range
coll.Add Worksheets(3).Range("A2:A" & Rows.Count)
coll.Add Worksheets(4).Range("A2:A" & Rows.Count)
Set newRng = coll
End Sub
或作为范围数组:
Sub combine()
Dim newRange(1) As Range
Set r1 = Worksheets(3).Range("A2:A" & Rows.Count)
Set r2 = Worksheets(4).Range("A2:A" & Rows.Count)
Set newRange(0) = r1
Set newRange(1) = r2
End Sub
使用上面的数组示例,您可以将值分配到另一个位置,根据需要进行修改:
Worksheets(4).Range("B1").Value = newRange(0).Value
Worksheets(4).Range("B2").Value = newRange(1).Value