Коллеги получают ошибку 5 в Excel-файле с VBA, но тот же файл отлично работает на моем компьютере?

У нас есть Excel-файл с большим количеством VBA за ним. Excel-файл отлично работает на моем компьютере, но до сих пор 3 из моих коллег (не ИТ-пользователей) получили эту ошибку:

Ошибка выполнения 5:
Неправильный вызов процедуры или аргумент

Ошибка находится в этой строке, и я не понимаю, почему она вызывает ошибку там, потому что это просто простой Set (и он отлично работает на моем компьютере):

Set MyButton = Application.CommandBars("Attributions").Controls.Add(Type:=msoControlButton, Before:=10) 

У всех нас есть тот же самый Excel-файл. Я даже отправил им свою версию файла, в которой все работает нормально, и никаких ошибок не происходит, но даже когда они открывают мою версию файла, они все равно получают вышеуказанную ошибку в приведенной выше строке!

Что именно может вызвать это? У всех нас есть Office 2013 и обновления устанавливаются автоматически. Проблема началась около двух недель назад с одним коллегой, и с этой недели я слышал от двух других коллег, что у них такая же проблема. Один даже сказал, что это внезапно снова сработало после того, как он перешел на другой стол (который, я сомневаюсь, повлиял бы), но вскоре после этого он снова начал получать ошибку.

Я абсолютно не знаю, почему они получают ошибку или что может вызвать ее. Увидев, что теперь у нас есть одна и та же версия, и они все еще получают ошибку, я думаю, что это может иметь какое-то отношение к самому Excel, но это только моя идея.

Значит ли это, что это всем знакомо? Или кто-нибудь знает, что может вызвать это, и как это можно исправить?

Edit: некоторое время назад я проверил на своих коллегах свои компьютеры, чтобы узнать, присутствует ли CommandBar, и так было. Даже тогда ошибка все же произошла.

Я предлагаю вам использовать функцию, которая проверяет, есть ли CommandBar в вашем Application как это:

 Function IsCommandBarValid(cbName As String) As Boolean Dim i As Long IsCommandBarValid = True For i = 1 To Application.CommandBars.Count If (Application.CommandBars(i).Name = cbName) Then Exit Function End If Next i IsCommandBarValid = False End Function 

Теперь вы можете использовать его, чтобы увидеть, что ваш пользователь имеет этот CommandBar в своем Application , а затем сделайте так:

 If (Not IsCommandBarValid("Attributions")) Then Call Application.CommandBars.Add(Name:="Attributions") End If ' And after this add your code Set MyButton = Application.CommandBars("Attributions").Controls.Add(Type:=msoControlButton, Before:=10) 

Неверный вызов или аргумент процедуры (ошибка 5)

Некоторая часть вызова не может быть завершена. Эта ошибка имеет следующие причины и решения:

  • Аргумент, вероятно, превышает диапазон допустимых значений. Например, функция Sin может принимать значения только в определенном диапазоне. Положительные аргументы менее 2 147 483 648 принимаются, а 2 147 483 648 генерирует эту ошибку.

    Проверьте диапазоны, разрешенные для аргументов.

  • Эта ошибка также может возникнуть, если делается попытка вызвать процедуру, которая недействительна на текущей платформе. Например, некоторые процедуры могут быть действительны только для Microsoft Windows или для Macintosh и т. Д.

    Проверьте информацию о процедуре, определенную платформой.

Для получения дополнительной информации выберите интересующий элемент и нажмите F1 (в Windows) или HELP (на Macintosh).

  • Статья источника MSDN
  • Ошибка времени выполнения «483» «Объект не поддерживает это свойство или метод»
  • Строка подключения Excel
  • VBA - метод «Список» объекта «_CommandBarComboBox» не выполнен
  • IF ... (AND) ошибка времени выполнения инструкции "13"
  • VBA: Получение времени выполнения 1004: метод «Диапазон» объекта «Рабочий стол» не удался при использовании ячеек
  • Ошибка RunTime на макросе VBA
  • Скопируйте и вставьте в последнюю строку, Ошибка 91
  • Аргумент VBA не является необязательной ошибкой userfrom listbox
  • Ошибка выполнения 1004 вызова макросов в другой книге, которая была открыта через vba
  • Application.Ontime Cancel Fails to Method 'ONTIME' объекта 'Application'
  • Объект Var или с блоком не установлен VBA
  • Давайте будем гением компьютера.