Excel 下标超出范围错误-合并工作表
我有多本工作表名为“SUMMARY-F”的工作簿。我需要将这些工作表合并到一个工作簿中,并使用以下代码:Excel 下标超出范围错误-合并工作表,excel,vba,Excel,Vba,我有多本工作表名为“SUMMARY-F”的工作簿。我需要将这些工作表合并到一个工作簿中,并使用以下代码: Sub CopySheets1() Dim wkb As Workbook Dim sWksName As String sWksName = "SUMMARY-F" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy
Sub CopySheets1()
Dim wkb As Workbook
Dim sWksName As String
sWksName = "SUMMARY-F"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
wkb.Worksheets(sWksName).Copy _
Before:=ThisWorkbook.Sheets(1)
End If
Next
Set wkb = Nothing
End Sub
子副本页1()
将wkb设置为工作簿
将sWksName设置为字符串
sWksName=“SUMMARY-F”
对于工作簿中的每个wkb
如果wkb.Name ThisWorkbook.Name然后
wkb.工作表(sWksName).副本_
之前:=此工作簿。工作表(1)
如果结束
下一个
设置wkb=无
端接头
代码运行了大约4次,但是现在当我运行它时,我得到了一个下标超出范围的错误9。关于如何解决这个问题有什么建议吗
谢谢,
Lucinda如果打开的工作簿中没有名为SUMMARY-F的工作表,则会出现超出范围的错误,因为Excel找不到具有指定名称的工作表。如果您使用PERSONAL.xlsm记录宏,则此错误也将应用于隐藏的工作簿(如PERSONAL.xlsm) 当打开的工作簿没有名为SUMMARY-F的工作表时,您应该在代码中包含一个复选框来处理这种情况 请参阅此问题,该问题提供了如何识别工作表是否存在的选项,例如定义可以首先从代码中调用的函数: 您只需修改它即可检查另一工作簿中的工作表,如:
Public Function CheckSheet(ByVal sWB As String, ByVal sSheetName As String) As Boolean
Dim oSheet As Excel.Worksheet
Dim bReturn As Boolean
For Each oSheet In Workbooks(sWB).Sheets
If oSheet.Name = sSheetName Then
bReturn = True
Exit For
End If
Next oSheet
CheckSheet = bReturn
End Function
然后,您可以在代码中添加检查:
Sub CopySheets1()
Dim wkb As Workbook
Dim sWksName As String
sWksName = "SUMMARY-F"
For Each wkb In Workbooks
If wkb.Name <> ThisWorkbook.Name Then
If CheckSheet(wkb.Name,sWksName)
wkb.Worksheets(sWksName).Copy Before:=ThisWorkbook.Sheets(1)
End If
End If
Next
Set wkb = Nothing
End Sub
子副本页1()
将wkb设置为工作簿
将sWksName设置为字符串
sWksName=“SUMMARY-F”
对于工作簿中的每个wkb
如果wkb.Name ThisWorkbook.Name然后
If检查表(wkb.Name、sWksName)
wkb.工作表(sWksName).Copy Before:=此工作簿.工作表(1)
如果结束
如果结束
下一个
设置wkb=无
端接头
您的一本工作簿没有名为“SUMMARY-F”的工作表?您是否有个人.xls*?