2016-06-24 7 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) 

Dieser letzte Satzbereich gibt mir einen Laufzeitfehler 1004. Was ist falsch an dieser Aussage?Multirange-Union-Anweisung funktioniert nicht

+0

Diese Frage wäre besser, wenn es in _edited_ enthalten Details darüber, welche Programmiersprache/environment dieses verwendet wird, ich _think_ dies ist ein Excel-Frage, aber ich bin mir nicht sicher. – chwarr

Antwort

0

Excel Union() funktioniert nicht für Bereiche über verschiedene Blätter hinweg. Kopieren Sie alle Bereiche in ein Blatt, oder verwenden Sie einen anderen VBA-Container, z. B. eine Sammlung, ein Array oder ein Wörterbuch. Im Folgenden geht Bereichswerte durch alle solche Behälter und iterately druckt Werte in jeder.

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