在工作簿中将所有床单组合在一起,除了一个



我有一个工作簿,该工作簿有许多具有不同名称的床单,需要将其组合在一起。我发现此代码很棒,除了我需要它忽略一个名为"命令"的表(用于其他目的)。该代码当前将创建一个名为"合并"的表格,并将所有表格结合在一起,但是如果不需要每次创建和删除组合表,我更喜欢它。因此,要澄清,本工作簿中的所有工作表都需要将其组合到"组合"纸上,除了称为"命令"的表格。

Private Sub COMBINE()
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub

您可以尝试:

Option Explicit
Sub test()
    Dim LastRow As Long
    Dim ws As Worksheet, wsCombined As Worksheet
    Dim SheetName As String
    Dim SheetExists As Boolean
    SheetName = "Combined"
    SheetExists = False
    With ThisWorkbook
        'Check if the Sheet exists
        For Each ws In .Worksheets
            If ws.Name = SheetName Then
                SheetExists = True
                Exit For
            End If
        Next
        If SheetExists = False Then
            'If the sheet dont exists, create
            .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = SheetName
        End If
        Set wsCombined = ThisWorkbook.Worksheets("Combined")
        For Each ws In .Worksheets
            If ws.Name <> "COMMAND" And ws.Name <> "Combined" Then
                LastRow = wsCombined.Cells(wsCombined.Rows.Count, "A").End(xlUp).Row
                ws.UsedRange.Copy wsCombined.Range("A" & LastRow + 1)
            End If
        Next
    End With
End Sub

而不是床单(1)。选择以下代码并将表格名称更改为第一个工作簿上的表名称。

thisWorkbook.Sheets(" Sheet1")。复制

相关内容

最新更新