我的一位客户在运行下面的 Excel VBA 代码时遇到问题。他收到以下错误Method 'VBE' of object '_Application' failed
,但只有一次,在他打开 VBE 后,它开始工作。而且,直到昨天,它还对他有效。
他正在使用 Excel 2010。
这是引发错误的代码。
For Each f In Application.VBE.ActiveVBProject.VBComponents
If InStr(1, f.Name, "UserForm") = 1 Then
Application.VBE.ActiveVBProject.VBComponents.Remove (f)
End If
Next f
您需要通过导航到 Excel 选项中的信任中心来确保对 VBE 的访问是可信的。
VBComponent 上的某些操作要求 VBE 至少打开一次,或者至少 VBA 引用了 VBEbefore它尝试枚举 vbComponents。
看起来您的客户端代码可能正在运行auto_open
程序或Workbook_Open
事件。如果您明确添加一行引用 VBE,您可能会发现代码再次开始工作before您枚举 vbComponents。
Debug.Assert Application.VBE.ActiveVBProject.Name <> vbNullString
For Each f In Application.VBE.ActiveVBProject.VBComponents
If InStr(1, f.Name, "UserForm") = 1 Then
Application.VBE.ActiveVBProject.VBComponents.Remove (f)
End If
Next f
详情请参阅该问题的答案:VBA 更改工作表代号运行时错误 9:下标超出范围 https://stackoverflow.com/questions/41022319/vba-changing-sheet-codename-run-time-error-9-subscript-out-of-range
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)