1

Я написал несколько кодов в Excel 2010 и передал их коллеге, у которого есть Excel 2013. Тем не менее, они просто не работают должным образом в новой версии Excel. Например, когда вы нажимаете кнопку в форме пользователя, она должна открывать вкладку, соответствующую выбранной учетной записи, но на его компьютере каждая кнопка указывает на одну и ту же вкладку. Я уже проверил его справочные библиотеки VBA, и это, похоже, не проблема. В чем может быть разница между различными версиями Excel? Я просто удивлен, что более новая версия моего коллеги не работает на кодах, написанных в более старой версии?

Образцы кодов

Sub GotoAccount()

Dim wksMaster as Workbook
Dim SheetName as String
Set wksMaster = Workbooks("2019 Account Log.xlsm")
SheetName = ActiveSheet.Shapes(Application.Caller).TopLeftCell
With Sheets(SheetName)
    .Visible = True
    .Activate
End With

End Sub

Предполагается, что этот подпункт содержит в журнале вкладку, связанную с конкретной учетной записью. Application.Caller - это кнопка, а за ней скрывается номер счета. Таким образом, оператор присваивания для SheetName записывает номер счета, и он будет использоваться для открытия вкладки, имя которой является номером счета. Как оказалось, произошла небольшая ошибка; коллекция Sheets не связана с wkbMaster . Однако вместо полного сбоя Excel тянет вкладку для другой учетной записи, записанной в журнале. Вот почему я подозреваю, что Excel 2013 обрабатывает некоторые коды по-разному.

0