excel vba如何将多个非连续范围的值复制到数组中

Sir*_*een 6 excel vba excel-vba

我试图将多个非连续范围的值复制到一个数组中.我写了这样的代码:

summaryTempArray = .range("A2:D9,A11:D12,A14:D15").Value
Run Code Online (Sandbox Code Playgroud)

但它只复制第一部分(A2:D9).然后,我尝试了以下内容,我得到错误 - "对象_全局失败的方法联盟" - 我使用联合的方式有什么错误吗?

summaryTempArray = Union(.range("A2:D9"), .range("A11:D12"), .range("A14:D15")).Value
Run Code Online (Sandbox Code Playgroud)

Joo*_*ook 10

不知道你的错误union,但它会产生相同的范围,这是你在第一次尝试时所说的.

问题是,你现在有多个领域.你可以,据我所知,你现在必须解决这个问题.

下面是一个示例,它将在所有区域的数组中解析,而不是单独添加每个单元格,而是将每个区域单独添加到摘要数组中:

Public Sub demo()
  Dim summaryTempArray() As Variant
  Dim i As Long

  With Tabelle1
    ReDim summaryTempArray(1 To .Range("A2:D9,A11:D12,A14:D15").Areas.Count)

    For i = 1 To .Range("A2:D9,A11:D12,A14:D15").Areas.Count
      summaryTempArray(i) = .Range("A2:D9,A11:D12,A14:D15").Areas(i)
    Next i
  End With

End Sub
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.