Я создаю книгу с поддержкой макросов Excel для Windows и Mac.Одна из платформ на Mac, на которой я хочу запустить это Excel 2011.
В моей книге используется настраиваемая вкладка ленты.Иногда, в зависимости от того, что делает пользователь, я хочу изменить текст кнопок ленты.Поэтому у меня есть код, который делает это.
Я знаю, что настраиваемая вкладка ленты в Excel 2011 невозможна. Это нормально.Однако в моем коде есть строка, сообщающая об ошибке компиляции в этой версии Excel.Я думал, что у меня установлено, что он не будет компилировать код, если работает в этой версии Excel, но, похоже, он не работает.
Я определяю переменную типа IRibbonUI для использования внутри стандартамодуль.(Модуль Module3, и он предназначен для кода, имеющего отношение к ленте.) Я заключаю код определения переменной (вместе с остальной частью кода в этом модуле) в оператор #IF, например, так:
#If Not Mac or MAC_OFFICE_VERSION >=15 Then
Dim ribbonUI As IRibbonUI
... rest of the code in Module3 ...
#End If
Это означает, что он не должен компилироваться во время выполнения в Excel 2011.
Когда книга открывается, я не получаю никаких ошибок.Однако, когда я запускаю подпрограмму (назовем ее «UpdateOptions», и она находится в Module1), которая вызывает подпрограмму, которая изменяет ленту (давайте назовем эту «ChangeRibbon», которая находится в Module3 *), я получаю компиляциюошибка в строке ribbonUI: пользовательский тип не определен
Я не понимаю, почему, потому что, насколько я понимаю, код в этом модуле не должен компилироваться во время выполнения.
* ChangeRibbon никогда не следует запускать в Excel 2011. У меня есть оператор IF, который удостоверяется, что это не так, например:
Sub UpdateOptions()
... some code ...
#If Not Mac or MAC_OFFICE_VERSION >=15 Then
Module3.ChangeRibbon
End If
... some other code ...
End Sub
Когда я выполняю код, ошибка возникает, когда UpdateOptionsсначала вызывается другим сабом.Пошаговое руководство выделяет имя сабвуфера как строку, которая вызывает ошибку:
Sub UpdateOptions()
Кто-нибудь знает, почему это происходит?Это не имеет никакого смысла для меня.