Ես ունեմ vba sub («sub») excel 2013-ում, որը բացում է մեկ այլ աշխատանքային գիրք, կարդում է որոշ տվյալներ, վերադարձնում է այս տվյալները և փակում նոր բացված աշխատանքային գիրքը: Այս ենթակետը հնարավոր է գործարկել ստեղնաշարի դյուրանցման և համատեքստային ընտրացանկի մուտքի միջոցով:
Այս զանգը (սա «UTILS.sub» է) հիանալի աշխատում է.
' Add the sub-call to a new context menu entry
Call UTILS.addContextMenuEntry("Caption", 2556, "UTILS.sub")
Բայց այս զանգը չի անում.
' Add the sub-call to a new keyboard shortcut
App.OnKey "+^{M}", "UTILS.sub"
Եթե ես զանգահարում եմ sub ստեղնաշարի դյուրանցմամբ, այն կոտրվում է առանց սխալի: Ինձ հաջողվել է մշակել հատուկ կոդային գիծ, որտեղ այն կոտրվում է վրիպազերծման միջոցով.
'[...]
Application.ScreenUpdating = False
' Open the external Workbook
Set wbHandle = Workbooks.Open("wb.xls", ReadOnly:=True)
MsgBox "Debug"
'[...]
wb.xls-ը բացվում է (և ցուցադրվում), բայց MsgBox «Վրիպազերծումը»՝ ոչ: «Բաց» տողից հետո ոչինչ չի աշխատում, և այս տողից հետո ոչ մի բեկման կետ չի հարվածվի: Մեկ այլ տարօրինակ բան. եթե ես վրիպազերծում եմ sub-ի զանգը՝ այդ տողից առաջ ընդմիջման կետով, ամեն ինչ հիանալի է աշխատում:
Ինչպե՞ս ստիպել ենթակետին ճիշտ աշխատել՝ հաշվի չառնելով, թե այն կոչվել է համատեքստի ընտրացանկի մուտքագրմամբ կամ ստեղնաշարի դյուրանցմամբ: