簡體   English   中英

對象'_Global的方法'Union'失敗

[英]Method 'Union' of object '_Global failed

更新:我意識到我不能在多張紙上使用聯合。 那我最好的選擇是什么?

我只想將工作簿中的所有工作表合並到第一個工作表中。

在解決了現有問題之后,我嘗試添加Set rng = none清除我的范圍,但這沒有幫助。

Sub Combine()

     Dim J As Long
     Dim Combine As Range
     Dim rng As Range


      'I want to start from the second sheet and go through all of them
      For J = 2 To Sheets.Count    

      With Sheets(J)
      Set rng = .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
      End With

      For Each Cell In rng
                If Combine Is Nothing Then
                Set Combine = Cell.EntireRow
            Else
                Set Combine = Union(Combine, Cell.EntireRow)
            End If

      Next Cell
      Set rng = Nothing
      Next J

    'Paste the whole union into the 1st sheet
    Combine.Copy Destination:=Sheets(1).Range("A1")

End Sub

所有這些代碼使我得到對象'_Global的錯誤方法'Union'失敗

更新2

Sub Combine2()

 Dim rowcount As Long


  For Each Sheet In Sheets

  If Sheet.Index <> 1 Then
  rowcount = Sheet.UsedRange.Rows.Count

  Sheet.UsedRange.Copy Destination:=Sheets(1).Cells(Lastrow + 1, 1)
  Lastrow = Lastrow + rowcount

  End If
  Next Sheet


End Sub

真的很簡單的代碼,效果很好,這要歸功於@luuklag在此方面的領導。

確實, .Union方法不適用於工作表。

相反,您可以嘗試遍歷所有工作表,復制相應的范圍並將其粘貼到目標工作表。

像下面這樣的東西可以達到這個目的:

Sub test()
Dim destinationSheet As Worksheet
Dim sht As Worksheet
Dim destinationRng As Range
Dim rng As Range
Set destinationSheet = ThisWorkbook.Worksheets("Name of your worksheet")

For Each sht In ThisWorkbook.Worksheets

    If sht.Name <> destinationSheet.Name Then

        With sht
            Set rng = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp))
            rng.Copy
        End With

        With destinationSheet
            Set destinationRng = .Range("A" & .Rows.Count).End(xlUp)
            If destinationRng.Address = .Range("A1").Address Then
                destinationRng.PasteSpecial xlPasteValues
            Else
                destinationRng.Offset(1, 0).PasteSpecial xlPasteValues
            End If
        End With
    End If
Next sht

End Sub

上面的代碼將范圍一一粘貼在同一列中。 可以輕松地對其進行修改,以將范圍粘貼到不同的列中,一個接一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM