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