Коллеги получают ошибку 5 в Excel-файле с VBA, но тот же файл отлично работает на моем компьютере?
У нас есть Excel-файл с большим количеством VBA за ним. Excel-файл отлично работает на моем компьютере, но до сих пор 3 из моих коллег (не ИТ-пользователей) получили эту ошибку:
Ошибка выполнения 5:
Неправильный вызов процедуры или аргумент
Ошибка находится в этой строке, и я не понимаю, почему она вызывает ошибку там, потому что это просто простой Set (и он отлично работает на моем компьютере):
- Ошибка VBA Runtime 1004. Не удалось использовать метод AutoFilter класса Range
- Рисование Rectagles в Excel, Entire Row, «Ошибка времени выполнения:« 1004 »»
- Ошибка времени выполнения «438» «Объект не поддерживает это свойство или метод»
- VBA Runtime Error ... но я не могу нажать на debug
- Ошибка выполнения «9» Подзаголовок вне диапазона - Диапазоны копирования
Set MyButton = Application.CommandBars("Attributions").Controls.Add(Type:=msoControlButton, Before:=10)
У всех нас есть тот же самый Excel-файл. Я даже отправил им свою версию файла, в которой все работает нормально, и никаких ошибок не происходит, но даже когда они открывают мою версию файла, они все равно получают вышеуказанную ошибку в приведенной выше строке!
Что именно может вызвать это? У всех нас есть Office 2013
и обновления устанавливаются автоматически. Проблема началась около двух недель назад с одним коллегой, и с этой недели я слышал от двух других коллег, что у них такая же проблема. Один даже сказал, что это внезапно снова сработало после того, как он перешел на другой стол (который, я сомневаюсь, повлиял бы), но вскоре после этого он снова начал получать ошибку.
Я абсолютно не знаю, почему они получают ошибку или что может вызвать ее. Увидев, что теперь у нас есть одна и та же версия, и они все еще получают ошибку, я думаю, что это может иметь какое-то отношение к самому Excel, но это только моя идея.
Значит ли это, что это всем знакомо? Или кто-нибудь знает, что может вызвать это, и как это можно исправить?
Edit: некоторое время назад я проверил на своих коллегах свои компьютеры, чтобы узнать, присутствует ли CommandBar, и так было. Даже тогда ошибка все же произошла.
- Ошибка при настройке переменной рабочей книги - 2147352565
- VBA Mac Excel 2016: Chart .Export Permission Denied Error 70
- Excel: Break on Error не работает в пользовательской функции
- Ошибка времени выполнения VBA 13
- Выбор последней ячейки в столбце - Ошибка 424?
- Ошибка времени выполнения VBA 1004 Метод AutoFilter класса Range Failed
- Excel VBA - Ошибка выполнения «1004»
- Ошибка выполнения 1004 - BeforePrint - Избегайте печати, если ячейки пусты
Я предлагаю вам использовать функцию, которая проверяет, есть ли 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