联盟没有拿起所有范围

时间:2019-03-29 22:33:15

标签: excel vba

我遇到了一些挑战,因为工会无法在宏里发挥作用。它应该可以合并几个范围,但似乎只能选择第一个范围。为了帮助解决挑战,我将所有代码精简为:


Dim copiedrange As Range
Dim SrcWB As Workbook
Dim SrcWS As Worksheet

Set SrcWB = Workbooks("all-euro-data-2018-2019 (1)")
Set SrcWS = SrcWB.Sheets("E1")

i = 1

Set copiedrange = Union(SrcWS.Range("A" & i & ":F" & i), SrcWS.Range("AX" & i), _
SrcWS.Range("AZ" & i), SrcWS.Range("BH" & i & ":BJ" & i))

MsgBox copiedrange.Columns.Count

End Sub

由于某种原因,当我认为应该考虑所有其他范围时,列数应返回6(从A到F)。我在想什么/弄错了/是个白痴吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

Union工作正常。例如,MsgBox copiedRange.Address返回$A$1:$F$1,$AX$1,$AZ$1,$BH$1:$BJ$1

您遇到Range.Columns的行为。Columns.Count返回第一个区域$A$1:$F$1)中的列数。

摘自Range.Columns文档:

  

当应用于多区域选择的Range对象时,此属性仅返回范围的第一个区域中的列。例如,如果Range对象具有两个区域-A1:B2C3:D4Selection.Columns.Count返回2,而不是4。要在可能包含多个整数的范围内使用此属性-area选择,测试Areas.Count,以确定范围是否包含多个区域。如果是这样,请遍历范围内的每个区域。