0
我strugglying幾個小時試圖理解爲什麼我的代碼不工作,儘管兩次重複做着完全相同的方式:Excel的VBA - 數組作爲名爲範圍的聯盟:古怪的行爲
這個工程上的一組
Dim MyArr() As Variant
Dim RangeName As Variant
RangeName = Array("oneNamedRange", "anotherNamedRange", "onemoreNamedRange")
MyArr = Union(Range(RangeName(0)), Range(RangeName(1)), Range(RangeName(2)))
現在,如果我試圖讓其他數據集一樣:命名範圍的
Dim MyProcess() As Variant
RangeName = Array("nr1", "nr2", "nr3", "nr4", "nr5", "nr6", "nr7")
MyProcess = Range(RangeName(0)) ' Ok
MyProcess = Range(RangeName(1)) ' Ok
MyProcess = Range(RangeName(2)) ' Ok
MyProcess = Range(RangeName(3)) ' Ok
MyProcess = Range(RangeName(4)) ' Ok
MyProcess = Range(RangeName(5)) ' Ok
MyProcess = Range(RangeName(6)) ' Ok
MyProcess = Union(Range(RangeName(0)), Range(RangeName(1))) ' Ok, got my 2D array
MyProcess = Union(Range(RangeName(0)), Range(RangeName(2))) ' NOK
MyProcess = Union(Range(RangeName(0)), Range(RangeName(3))) ' NOK
MyProcess = Union(Range(RangeName(0)), Range(RangeName(4))) ' NOK
MyProcess = Union(Range(RangeName(0)), Range(RangeName(5))) ' NOK
MyProcess = Union(Range(RangeName(0)), Range(RangeName(6))) ' NOK
MyProcess = Union(Range(RangeName(0)), Range(RangeName(0)), Range(RangeName(0))) ' NOK gives only 1D
MyProcess = Union(Range(RangeName(1)), Range(RangeName(1)), Range(RangeName(1))) ' NOK gives only 1D
MyProcess = Union(Range(RangeName(0)), Range(RangeName(1)), Range(RangeName(1))) ' NOK gives only 2D out of 3
MyProcess = Union(Range(RangeName(0)), Range(RangeName(1)), Range(RangeName(2))) ' NOK gives only 2D out of 3
貌似聯盟或Application.union工程奇怪的VBA。我也檢查了命名的範圍(大小,名稱),但找不到任何線索。
我可以找到任何好的子過程來設置從命名範圍的數組,在提供的範圍的任何情況下工作?
第一聯(後),下一個迭代應該使用'聯盟(myProcess,[rangeToAdd])' – 2014-10-04 16:07:17
MyProcess是一個數組,我猜不能添加任何東西。下一個「聯合」用於迭代測試目的,單獨嘗試每個範圍,然後添加2個範圍等。 – hornetbzz 2014-10-04 16:14:27
Tim的工作解決方案是[there] [1]。 THX [1]:http://stackoverflow.com/a/23894096/461212 – hornetbzz 2014-10-04 18:26:06