vba的新手,尝试“on error goto”,但是,我不断收到错误“index out of range”。

我只想制作一个组合框,该组合框由包含查询表的工作表的名称填充。

    For Each oSheet In ActiveWorkbook.Sheets
        On Error GoTo NextSheet:
         Set qry = oSheet.ListObjects(1).QueryTable
         oCmbBox.AddItem oSheet.Name

NextSheet:
    Next oSheet

我不确定问题是否与在循环内嵌套On Error GoTo有关,还是与避免使用循环有关。

最佳答案

问题可能是您还没有从第一个错误中恢复。您不能从错误处理程序中引发错误。您应该添加一个resume语句,类似于以下内容,因此VBA不再认为您位于错误处理程序中:

For Each oSheet In ActiveWorkbook.Sheets
    On Error GoTo NextSheet:
     Set qry = oSheet.ListObjects(1).QueryTable
     oCmbBox.AddItem oSheet.Name
NextSheet:
    Resume NextSheet2
NextSheet2:
Next oSheet

10-08 09:31