Я написал несколько кодов в 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 обрабатывает некоторые коды по-разному.