Excel VBA – 如果找不到表格,则退出代码

我的代码是从一个文件夹合并多个工作表。 我达到了合并所有目标工作簿的第一个要求。 但是现在,我想合并第四张目标工作簿。 在此之前,我需要检查工作表是否存在。 如果存在,代码应该合并第四张。 这也是我设法实现的。 但是,如果第四张纸不存在,代码应该什么也不做。 这部分我仍然坚持。 下面是代码。

Set shtDest = ActiveWorkbook.Sheets("MS2") Filename = Dir(path & "\*.xls", vbNormal) If Len(Filename) = 0 Then Exit Sub Do Until Filename = vbNullString If Not Filename = ThisWB Then Set Wkb = Workbooks.Open(Filename:=path & "\" & Filename) For i = 1 To Worksheets.Count If Worksheets(i).Name = "PID2" Then Wkb.Sheets(4).Activate Set CopyRng = Wkb.Sheets(4).Range(Cells(RowofCopySheet, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)) Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row) CopyRng.Copy Dest Wkb.Close False "ElseIf Worksheets(i).Name <> "PID2" Then" "Wkb.Close False" "Exit Sub" End If Next i End If Filename = Dir() Loop 

假设PID2是要复制的第四张纸张(如果存在)

 Sub t() Set shtDest = ActiveWorkbook.Sheets("MS2") Filename = Dir(Path & "\*.xls", vbNormal) If Len(Filename) = 0 Then Exit Sub Do Until Filename = vbNullString If Not Filename = ThisWB Then Set Wkb = Workbooks.Open(Filename:=Path & "\" & Filename) For i = 1 To Worksheets.Count If Worksheets(i).Name = "PID2" Then Worksheets(i).Activate Set CopyRng = Worksheets(i).Range(Cells(RowofCopySheet, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)) Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row) CopyRng.Copy Dest End If Next i Wkb.Close False End If Filename = Dir() Loop End Sub 

PFA为所需的代码,我在代码中做了一些修改。

  Set shtDest = ActiveWorkbook.Sheets("MS2") Filename = Dir(Path & "\*.xls", vbNormal) If Len(Filename) = 0 Then Exit Sub Do Until Filename = vbNullString If Not Filename = ThisWB Then Set Wkb = Workbooks.Open(Filename:=Path & "\" & Filename) For i = 1 To Worksheets.Count If Worksheets(i).Name = "PID2" Then Wkb.Sheets(i).Activate Set CopyRng = Range(Cells(RowofCopySheet, 1), ActiveCell.SpecialCells(xlCellTypeLastCell)) Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row) CopyRng.Copy Dest Exit For End If Next i Wkb.Close False End If Filename = Dir() Loop 

你需要指定一些标准,然后退出,

 If something = <criteria> Then goto exitsub end if exitsub: 

这将使用以下命令跳转到exitsub :在指定exitsub:的stringexitsub:您可以将其设置为任意值,例如goToEndOfSub:

 If something = <criteria> Then goto goToEndOfSub end if goToEndOfSub: 

你也可以使用Exit语句 ,在你的情况下做一个循环。

 Exit Do