在第二个屏幕上打开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
答案 0 :(得分:0)
临时答案(更好的答案之前):
由于用户每月都会更改工作表名称,并且由于getSheetByCodeName似乎对该特定文件造成了问题,因此我决定使用
Set shSrc = wbSrc.Sheets(3) 'use index property
这将起作用,只要用户不移动标签即可。