2016-06-24 1 views
0
Private Sub workbook_open() 

Select the range of cells 

Dim r1, r2, r3, r4, r5, multirange 

Set r1 = Sheets("SE_SQ").Range("Ad1:ak50") 

Set r2 = Sheets("Main").Range("Ad1:ak50") 

Set r3 = Sheets("Feeler").Range("Ad1:ak50") 

Set r4 = Sheets("Egg Crates").Range("Ad1:ak50") 

Set r5 = Sheets("other").Range("Ad1:ak50") 

Set multirange = Union(r1, r2, r3, r4, r5) 

이 마지막 설정 범위는 런타임 오류 1004를 제공합니다.이 명령문에 어떤 문제가 있습니까?multirange union 문이 작동하지 않습니다.

+0

내가 _think_ :. 다음은 각에서 이러한 모든 컨테이너와 iterately 인쇄 값을 통해 범위 값을 전달 엑셀 질문,하지만 잘 모르겠습니다. – chwarr

답변

0

Excel의 Union()은 다른 시트의 범위에서 작동하지 않습니다. 모든 범위를 하나의 시트로 복사하거나 컬렉션, 배열 또는 사전과 같은 다른 VBA 컨테이너를 사용하는 것을 고려하십시오.

이가이다는이에 사용되는 프로그래밍 언어/환경에 대한 세부 사항을 포함하는 _edited_이라면이 질문은 더 좋을 것이다
Public Sub RangeTest() 
    Dim r1, r2, r3, r4, r5 
    Dim d1 As New Collection, d2(1 To 250) As Variant, d3 As Object 
    Dim i As Variant, n As Variant, num As Integer 

    Set r1 = Sheets("SE_SQ").Range("Ad1:ak50") 
    Set r2 = Sheets("Main").Range("Ad1:ak50") 
    Set r3 = Sheets("Feeler").Range("Ad1:ak50") 
    Set r4 = Sheets("Egg Crates").Range("Ad1:ak50") 
    Set r5 = Sheets("other").Range("Ad1:ak50") 

    ' COLLECTION ' 
    For Each i In Array(r1, r2, r3, r4, r5) 
     For Each n In i 
      d1.Add n 
     Next n 
    Next i   
    For Each i In d1: Debug.Print i: Next i 

    ' ARRAY ' 
    num = 1 
    For Each i In Array(r1, r2, r3, r4, r5) 
     For Each n In i 
      d2(num) = n 
      num = num + 1 
     Next n 
    Next i   
    For Each i In d2: Debug.Print i: Next i 

    ' DICTIONARY ' 
    Dim key As Variant, val As Variant 
    Set d3 = CreateObject("Scripting.Dictionary") 
    num = 1 
    For Each i In Array(r1, r2, r3, r4, r5) 
     For Each n In i 
      key = num: val = n: d3.Add key, val 
      num = num + 1 
     Next n 
    Next i   
    For Each i In d3: Debug.Print d3(i): Next i 

End Sub