检查外部已关闭工作簿中是否存在工作表

时间:2016-06-15 00:10:20

标签: excel vba excel-vba error-handling

我想测试当前工作簿中的某些工作表是否存在于另一个已关闭的工作簿中,并返回一条消息,说明哪些工作表导致错误。

我不想打开/关闭工作簿,因此我尝试更改随机单元格中的公式以链接到文件路径(fp)的工作簿以测试工作表是否存在。

我用虚拟表测试了这个,我知道它不存在于另一个工作簿中并且它可以工作但是当我有多张导致错误的工作表时,我得到了一个"应用程序 - 定义的或对象定义的错误"。在第二次迭代中,我相信错误处理的写入方式会导致崩溃,但我并不完全理解它是如何工作的。

我得到的代码是:

Sub SheetTest(ByVal fp As String)
Dim i, errcount As Integer
Dim errshts As String

For i = 2 To Sheets.Count
    On Error GoTo NoSheet
        Sheets(1).Range("A50").Formula = "='" & fp & Sheets(i).Name & "'!A1"
    GoTo NoError
NoSheet:
errshts = errshts & "'" & Sheets(i).Name & "', "
errcount = errcount + 1
NoError:
Next i

Sheets(1).Range("A50").ClearContents

If Not errshts = "" Then
    If errcount = 1 Then
        MsgBox "Sheet " & Left(errshts, Len(errshts) - 2) & " does not exist in the Output file. Please check the sheet name or select another Output file."
    Else
        MsgBox "Sheets " & Left(errshts, Len(errshts) - 2) & " do not exist in the Output file. Please check each sheet's name or select another Output file."
    End If
    End
End If

End Sub

希望你们能在这里帮助我,谢谢!

3 个答案:

答案 0 :(得分:2)

这是一种略有不同的方法:

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self

}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if let cell = tableView.dequeueReusableCellWithIdentifier("mainCell") as? mainCell {

        cell.mainHeader.text = (mainHeader[indexPath.row])
        cell.mainBody.text = (mainBody[indexPath.row])
        cell.mainBody.numberOfLines = 0
        cell.mainBody.lineBreakMode = NSLineBreakMode.ByWordWrapping


        return cell

    } else {

        return mainCell()
    }

}    

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return mainHeader.count
}


}

答案 1 :(得分:0)

只是更新Tim的错误处理功能:

VBA:

icons.js

答案 2 :(得分:-1)

Sub Tester()

MsgBox(不是IsError(Application.ExecuteExcel4Macro("' C:\ temp [temp.xlsm] Sheetxyz'!R1C1")))

End Sub