VBE未打开时,getSheetByCodeName无法正常工作

时间:2019-06-04 10:52:10

标签: excel vba

在第二个屏幕上打开VBE时,我的代码可以正常运行,但是在VBE关闭时,它找不到工作表,并显示MsgBox
正在打开的工作簿很大,打开起来很慢。
我添加了DoEvents,但似乎没有什么不同。
有什么线索吗?

'some code.....
Set wbSrc = Workbooks.Open(filename:=filename, UpdateLinks:=False, ReadOnly:=True)
DoEvents
Set shSrc = getSheetByCodeName(wbSrc, "Sheet3")    
If shSrc Is Nothing Then
    MsgBox "Couldn't find sheet"
    Exit Sub
End If
'continues....


Function getSheetByCodeName(wb As Workbook, codeName As String) As Worksheet
'given wb object and codeName string, returns a ref to the sheet in wb that has that codeName
'returns Nothing if nothing found
    Dim sh As Worksheet
    For Each sh In wb.Sheets
        If sh.codeName = codeName Then
            Set getSheetByCodeName = sh
            Exit Function
        End If
    Next sh
    Set getSheetByCodeName = Nothing
End Function

1 个答案:

答案 0 :(得分:0)

临时答案(更好的答案之前):
由于用户每月都会更改工作表名称,并且由于getSheetByCodeName似乎对该特定​​文件造成了问题,因此我决定使用

Set shSrc = wbSrc.Sheets(3)   'use index property

这将起作用,只要用户不移动标签即可。