Ошибка времени выполнения basic аргумент является обязательным

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

#1

04.04.2023 17:56:12

Добрый день, я пытаюсь использовать решение из этой темы:

https://www.planetaexcel.ru/techniques/3/52/

а именно этот код:

Код
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value
            Application.EnableEvents = True
        End If
    End If
End Sub

Но получаю ошибку: «Ошибка времени выполнения Basic. ‘449’ Аргумент является обязательным.»

Скрин с ошибкой приложил.

Да, у меня либра офис, я создал файл .xlsm и в нем создал этот макрос, но получаю ошибку. Подскажите пожалуйста, как исправить её.

Прикрепленные файлы

  • Screenshot_4.jpg (81.72 КБ)

Изменено: Budapest04.04.2023 18:10:56

 

Maximich

Пользователь

Сообщений: 522
Регистрация: 28.08.2016

Подозреваю, что у вас лишняя буква — Nothing

Изменено: Maximich04.04.2023 17:59:57

Кто ясно мыслит, тот ясно излагает.

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

#3

04.04.2023 18:11:48

Цитата
написал:
Подозреваю, что у вас лишняя буква — Noth ing

Да, спасибо, поправил опечатки, но ошибка осталась

 

Igor67

Пользователь

Сообщений: 3733
Регистрация: 21.12.2012

Budapest, а у Вас точно эксель от микрософта, и Вы уверены что в Либре должен работать ВБА?  

Изменено: Igor6704.04.2023 21:53:07

 

БМВ

Модератор

Сообщений: 21651
Регистрация: 28.12.2016

Excel 2013, 2016

LibreCalc 7.2.1.2 — код  #1 работает без коррекции.

По вопросам из тем форума, личку не читаю.

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

У меня либра офис, но я без понятия как оно там работает.
Оказалось что в форматах xlsxxlsm макрос не сохраняется,  т.е. если создать макрос, сохранить, закрыть файл и снова открыть, макрос исчезает. И я просто обескуражен этим фактом.

Изменено: Budapest04.04.2023 22:22:54

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

#7

04.04.2023 22:18:18

Цитата
написал:
LibreCalc 7.2.1.2 — код  #1 работает без коррекции.

Код 1 это который?
У меня версия calc 7.5.1.2

Изменено: Budapest04.04.2023 22:21:10

 

БМВ

Модератор

Сообщений: 21651
Регистрация: 28.12.2016

Excel 2013, 2016

#1 это из первого поста.
Да, после записи коверкается файл — это факт.

По вопросам из тем форума, личку не читаю.

 

bigorq

Пользователь

Сообщений: 795
Регистрация: 26.04.2018

#9

05.04.2023 10:21:29

Budapest,

Цитата
Budapest написал:
в форматах xlsxxlsm макрос не сохраняется,  … И я просто обескуражен этим фактом.

придется смириться, что не все программы могут работать с VBA как MSO.  А какова цель применения этого кода для вас? Просто перенести на  LibreOffice или решаете какую то задачу?
Да, первоначальная ошибка 449 из-за того что просто запускаете макрос, его нужно повесить на событие листа «изменение ячейки»

Изменено: bigorq05.04.2023 10:22:24

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

#10

05.04.2023 12:17:58

Цитата
написал:
Budapest,

Цитата
Budapest написал:
в форматах xlsxxlsm макрос не сохраняется,  … И я просто обескуражен этим фактом.

придется смириться, что не все программы могут работать с VBA как MSO.  А какова цель применения этого кода для вас? Просто перенести на  LibreOffice или решаете какую то задачу?
Да, первоначальная ошибка 449 из-за того что просто запускаете макрос, его нужно повесить на событие листа «изменение ячейки»

Похоже что так, вы правы. У меня около месяца назад закончился MS Office, и продлить его пока нет возможности из-за санкций. Поставил либру и вот такой сюрприз с макросом. Макрос этот буду использовать в табличке с моим личным финансовым учетом, чтобы быстро вносить расходы и они автоматом суммировались бы.
Я решил проблему так, что просто попросил товарища с MS office создать файлик xlsm с этим макросом, тогда он норм работает и в либре офисе.
Благодарю всех за помощь!  

 

Budapest

Пользователь

Сообщений: 6
Регистрация: 04.04.2023

Мда, а макрос в либра офис, после редактирования файла и сохранения, все равно перестает работать. Эх, значит придется таки ставить MS office.
Либра с VBA не работает нормально.

 

Юрий М

Модератор

Сообщений: 60763
Регистрация: 14.09.2012

Контакты см. в профиле

#12

05.04.2023 12:47:06

Цитата
Budapest написал: У меня либра офис,

Budapest,  а у нас форум по MS EXCEL.

В этой статье представлена ошибка с номером Ошибка 449, известная как Аргумент не является обязательным, описанная как Количество и типы аргументов должны соответствовать ожидаемым.

О программе Runtime Ошибка 449

Время выполнения Ошибка 449 происходит, когда Windows дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.

Определения (Бета)

Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!

  • Аргумент — аргумент — это значение, переданное функции, процедуре или программе командной строки.
  • Соответствие — концепция программирования о поиске результатов, основанных на каком-либо поиске.
  • Необязательный — неизменяемый тип, который может содержать значение или ссылку.
  • Типы — Типы и системы типов используются для обеспечения уровней абстракции в программах.
  • Число — Число — это математический объект, используемый для подсчета, измерения и маркировки.
Симптомы Ошибка 449 — Аргумент не является обязательным

Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.

Возможны случаи удаления файлов или появления новых файлов. Хотя этот симптом в основном связан с заражением вирусом, его можно отнести к симптомам ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но, опять же, это не всегда так.

Fix Аргумент не является обязательным (Error Ошибка 449)
(Только для примера)

Причины Аргумент не является обязательным — Ошибка 449

При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.

Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.

Методы исправления

Ошибки времени выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, существует возможность ремонта. Вот способы сделать это.

Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.

Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.

Метод 1 — Закройте конфликтующие программы

Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.

  • Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
  • Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
  • Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
  • Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.

Метод 2 — Обновите / переустановите конфликтующие программы

Использование панели управления

  • В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
  • В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
  • Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
  • В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
  • Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.

Использование других методов

  • В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
  • В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
  • Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
  • Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.

Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.

Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.

Метод 4 — Переустановите библиотеки времени выполнения

Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.

  • Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
  • Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
  • Загрузите последний распространяемый пакет от Microsoft и установите его.

Метод 5 — Запустить очистку диска

Вы также можете столкнуться с ошибкой выполнения из-за очень нехватки свободного места на вашем компьютере.

  • Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
  • Вы также можете очистить кеш и перезагрузить компьютер.
  • Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C :)
  • Щелкните «Свойства», а затем — «Очистка диска».

Метод 6 — Переустановите графический драйвер

Если ошибка связана с плохим графическим драйвером, вы можете сделать следующее:

  • Откройте диспетчер устройств и найдите драйвер видеокарты.
  • Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.

Метод 7 — Ошибка выполнения, связанная с IE

Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

Если эти быстрые исправления не работают, вы всегда можете сделать резервную копию файлов и запустить восстановление на вашем компьютере. Однако вы можете сделать это позже, когда перечисленные здесь решения не сработают.

Другие языки:

How to fix Error 449 (Argument not optional) — The number and types of arguments must match those expected.
Wie beheben Fehler 449 (Argument nicht optional) — Anzahl und Typen der Argumente müssen mit den erwarteten übereinstimmen.
Come fissare Errore 449 (Argomento non facoltativo) — Il numero e i tipi di argomenti devono corrispondere a quelli previsti.
Hoe maak je Fout 449 (Argument niet optioneel) — Het aantal en de soorten argumenten moeten overeenkomen met de verwachte.
Comment réparer Erreur 449 (Argument non facultatif) — Le nombre et les types d’arguments doivent correspondre à ceux attendus.
어떻게 고치는 지 오류 449 (선택 사항이 아닌 인수) — 인수의 수와 유형은 예상되는 것과 일치해야 합니다.
Como corrigir o Erro 449 (Argumento não opcional) — O número e os tipos de argumentos devem corresponder aos esperados.
Hur man åtgärdar Fel 449 (Argument inte valfritt) — Antalet och typerna av argument måste matcha de förväntade.
Jak naprawić Błąd 449 (Argument nie jest opcjonalny) — Liczba i typy argumentów muszą być zgodne z oczekiwanymi.
Cómo arreglar Error 449 (Argumento no opcional) — El número y los tipos de argumentos deben coincidir con los esperados.

The Author Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.

Следуйте за нами: Facebook Youtube Twitter

Последнее обновление:

02/02/22 02:09 : Пользователь Linux проголосовал за то, что метод восстановления 1 работает для него.

Рекомендуемый инструмент для ремонта:

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.

ШАГ 1:

Нажмите здесь, чтобы скачать и установите средство восстановления Windows.

ШАГ 2:

Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.

ШАГ 3:

Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.

СКАЧАТЬ СЕЙЧАС

Совместимость

Требования

1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.

ID статьи: ACX02494RU

Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000

  • Remove From My Forums
  • Question

  • I am getting this error when debugging a VB application. The method that is being called when I get this does not have any arguments.

    Definitions in code are as follows with names changed to protect the guilty

    [From the ActiveX code]
    MyControlCtl.cpp(161): DISP_FUNCTION(CMyControlCtrl, «BadArgmentFunction», BadArgmentFunction, VT_I4, VTS_NONE)
    MyControlCtl.cpp(1213):long CMyControlCtrl::BadArgmentFunction()
    MyControlCtl.h(191): afx_msg long BadArgmentFunction();
    MyControlCtl.h(416): dispidBadArgmentFunction = 108L,

    [From VB application]
    Public Function BadArgmentFunction() As returnCodes
      On Error GoTo ErrHandler
      Dim lresult As Long

        oErrHandler.Message «TO», «BadArgmentFunction», «()»
      lresult = myControl.BadArgmentFunction  ‘ when this executes, I get the error «Run-time error ‘449’: Argument not optional»
      BadArgmentFunction= lresult
      oErrHandler.Message «TO», «BadArgmentFunction», «Returned » & CStr(BadArgmentFunction)
      Exit Function

      ErrHandler:
      oErrHandler.Message «Error», «BadArgmentFunction», Err.Description, Err.Number
      Resume Next

      End Function

    The question is, if the method is not defined to accept argments, then why am I having a debug assertion while debugging that says that the arguments are not optional?

Answers

  • Found the problem. It was that in the header file in one order where the afx_msg macro is interpreted and in the source file where the DISP_FUNCTION macro was interpreted, it was swapped with another function name that took a parameter.

    Kind of dicey if you ask me but oh well. Chock one up to experience.

    • Marked as answer by

      Monday, July 6, 2009 8:04 AM

  • Remove From My Forums
  • Question

  • I am getting this error when debugging a VB application. The method that is being called when I get this does not have any arguments.

    Definitions in code are as follows with names changed to protect the guilty

    [From the ActiveX code]
    MyControlCtl.cpp(161): DISP_FUNCTION(CMyControlCtrl, «BadArgmentFunction», BadArgmentFunction, VT_I4, VTS_NONE)
    MyControlCtl.cpp(1213):long CMyControlCtrl::BadArgmentFunction()
    MyControlCtl.h(191): afx_msg long BadArgmentFunction();
    MyControlCtl.h(416): dispidBadArgmentFunction = 108L,

    [From VB application]
    Public Function BadArgmentFunction() As returnCodes
      On Error GoTo ErrHandler
      Dim lresult As Long

        oErrHandler.Message «TO», «BadArgmentFunction», «()»
      lresult = myControl.BadArgmentFunction  ‘ when this executes, I get the error «Run-time error ‘449’: Argument not optional»
      BadArgmentFunction= lresult
      oErrHandler.Message «TO», «BadArgmentFunction», «Returned » & CStr(BadArgmentFunction)
      Exit Function

      ErrHandler:
      oErrHandler.Message «Error», «BadArgmentFunction», Err.Description, Err.Number
      Resume Next

      End Function

    The question is, if the method is not defined to accept argments, then why am I having a debug assertion while debugging that says that the arguments are not optional?

Answers

  • Found the problem. It was that in the header file in one order where the afx_msg macro is interpreted and in the source file where the DISP_FUNCTION macro was interpreted, it was swapped with another function name that took a parameter.

    Kind of dicey if you ask me but oh well. Chock one up to experience.

    • Marked as answer by

      Monday, July 6, 2009 8:04 AM

  • Remove From My Forums
  • Question

  • I am getting this error when debugging a VB application. The method that is being called when I get this does not have any arguments.

    Definitions in code are as follows with names changed to protect the guilty

    [From the ActiveX code]
    MyControlCtl.cpp(161): DISP_FUNCTION(CMyControlCtrl, «BadArgmentFunction», BadArgmentFunction, VT_I4, VTS_NONE)
    MyControlCtl.cpp(1213):long CMyControlCtrl::BadArgmentFunction()
    MyControlCtl.h(191): afx_msg long BadArgmentFunction();
    MyControlCtl.h(416): dispidBadArgmentFunction = 108L,

    [From VB application]
    Public Function BadArgmentFunction() As returnCodes
      On Error GoTo ErrHandler
      Dim lresult As Long

        oErrHandler.Message «TO», «BadArgmentFunction», «()»
      lresult = myControl.BadArgmentFunction  ‘ when this executes, I get the error «Run-time error ‘449’: Argument not optional»
      BadArgmentFunction= lresult
      oErrHandler.Message «TO», «BadArgmentFunction», «Returned » & CStr(BadArgmentFunction)
      Exit Function

      ErrHandler:
      oErrHandler.Message «Error», «BadArgmentFunction», Err.Description, Err.Number
      Resume Next

      End Function

    The question is, if the method is not defined to accept argments, then why am I having a debug assertion while debugging that says that the arguments are not optional?

Answers

  • Found the problem. It was that in the header file in one order where the afx_msg macro is interpreted and in the source file where the DISP_FUNCTION macro was interpreted, it was swapped with another function name that took a parameter.

    Kind of dicey if you ask me but oh well. Chock one up to experience.

    • Marked as answer by

      Monday, July 6, 2009 8:04 AM

Icon Ex Номер ошибки: Ошибка во время выполнения 449
Название ошибки: Argument not optional
Описание ошибки: The number and types of arguments must match those expected.
Разработчик: Microsoft Corporation
Программное обеспечение: Windows Operating System
Относится к: Windows XP, Vista, 7, 8, 10, 11

Сводка «Argument not optional

Как правило, специалисты по ПК называют «Argument not optional» как тип «ошибки времени выполнения». Разработчики Microsoft Corporation обычно оценивают Windows Operating System с помощью серии модулей для удаления ошибок в соответствии с отраслевыми стандартами. Хотя эти превентивные действия принимаются, иногда ошибки, такие как ошибка 449, будут пропущены.

После первоначального выпуска пользователи Windows Operating System могут столкнуться с сообщением «The number and types of arguments must match those expected.» во время запуска программы. Сообщение об этой ошибке 449 позволит разработчикам обновить свое приложение и исправить любые ошибки, которые могут вызвать его. Затем Microsoft Corporation может исправить эти ошибки в исходном коде и подготовить обновление для загрузки. Чтобы исправить любые документированные ошибки (например, ошибку 449) в системе, разработчик может использовать комплект обновления Windows Operating System.

Сбой во время запуска Windows Operating System или во время выполнения, как правило, когда вы столкнетесь с «Argument not optional». Три распространенные причины, по которым ошибки во время выполнения, такие как всплывающее окно ошибки 449:

Ошибка 449 Crash — программа обнаружила ошибку 449 из-за указанной задачи и завершила работу программы. Это возникает, когда Windows Operating System не работает должным образом или не знает, какой вывод будет подходящим.

Утечка памяти «Argument not optional» — ошибка 449 утечка памяти приводит к тому, что Windows Operating System использует все больше памяти, что делает ваш компьютер запуск медленнее и замедляет вывод системы. Возможные причины включают сбой Microsoft Corporation для девыделения памяти в программе или когда плохой код выполняет «бесконечный цикл».

Ошибка 449 Logic Error — Вы можете столкнуться с логической ошибкой, когда программа дает неправильные результаты, даже если пользователь указывает правильное значение. Когда точность исходного кода Microsoft Corporation низкая, он обычно становится источником ошибок.

Как правило, такие Microsoft Corporation ошибки возникают из-за повреждённых или отсутствующих файлов Argument not optional, а иногда — в результате заражения вредоносным ПО в настоящем или прошлом, что оказало влияние на Windows Operating System. Большую часть проблем, связанных с данными файлами, можно решить посредством скачивания и установки последней версии файла Microsoft Corporation. Запуск сканирования реестра после замены файла, из-за которого возникает проблема, позволит очистить все недействительные файлы Argument not optional, расширения файлов или другие ссылки на файлы, которые могли быть повреждены в результате заражения вредоносным ПО.

Типичные ошибки Argument not optional

Argument not optional Проблемы, связанные с Windows Operating System:

  • «Ошибка программного обеспечения Argument not optional. «
  • «Недопустимый файл Argument not optional. «
  • «Извините за неудобства — Argument not optional имеет проблему. «
  • «К сожалению, мы не можем найти Argument not optional. «
  • «Argument not optional не может быть найден. «
  • «Ошибка запуска программы: Argument not optional.»
  • «Не удается запустить Argument not optional. «
  • «Ошибка Argument not optional. «
  • «Неверный путь к программе: Argument not optional. «

Эти сообщения об ошибках Microsoft Corporation могут появляться во время установки программы, в то время как программа, связанная с Argument not optional (например, Windows Operating System) работает, во время запуска или завершения работы Windows, или даже во время установки операционной системы Windows. Выделение при возникновении ошибок Argument not optional имеет первостепенное значение для поиска причины проблем Windows Operating System и сообщения о них вMicrosoft Corporation за помощью.

Эпицентры Argument not optional Головные боли

Эти проблемы Argument not optional создаются отсутствующими или поврежденными файлами Argument not optional, недопустимыми записями реестра Windows Operating System или вредоносным программным обеспечением.

В частности, проблемы с Argument not optional, вызванные:

  • Поврежденные ключи реестра Windows, связанные с Argument not optional / Windows Operating System.
  • Вирус или вредоносное ПО, повреждающее Argument not optional.
  • Argument not optional злонамеренно удален (или ошибочно) другим изгоем или действительной программой.
  • Argument not optional конфликтует с другой программой (общим файлом).
  • Windows Operating System (Argument not optional) поврежден во время загрузки или установки.

Продукт Solvusoft

Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

Контекст . Я пытаюсь динамически вызывать метод через функцию Application.Run VBA и динамически передавать параметры в метод. Больше доказательства концепции, чем фактический вариант использования.

< Сильный > Код:

Public Sub Test()
    Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub

Public Sub MethodDynamically(MethodName As String, Params As String)
    Application.Run MethodName, Params
End Sub

Public Sub MethodToBeCalled(Param1 As String, Param2 As String)
    Debug.Print Param1 & " " & Param2
End Sub

Ошибка: запуск метода Test, который я получаю Run-time error '449': Argument not optional в строке Application.Run в методе MethodDynamically.

Ожидание . Я хочу, чтобы при запуске метода Test сработали MethodToBeCalled с This doesnt и work передачей в качестве параметров. Результат будет This doesnt work в «Немедленном окне».

2 ответа

Public Sub Test()
    Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub

Public Sub MethodDynamically(MethodName As String, Params As String, Optional Params2 As String)
    Application.Run MethodName, Params, Params2
End Sub

Public Sub MethodToBeCalled(Param1 As String, Param2 As String)
    Debug.Print Param1 & "  " & Param2
End Sub


0

Xabier
24 Ноя 2017 в 10:01

У вас есть 2 варианта.

1 разбить строку «Это не так, работать на 2 параметра

Public Sub TestThis()
    Call MethodDynamically("MethodToBeCalled", "This doesnt", "work")
End Sub

Public Sub MethodDynamically(MethodName As String, Param1 As String, Param2     As String)
    Application.Run MethodName, Params
End Sub

Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
    Debug.Print Param1 & ", " & Param2
End Sub

Или используйте необязательные параметры:

Public Sub TestThis()
    Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub

Public Sub MethodDynamically(MethodName As String, Params As String)
    Application.Run MethodName, Params
End Sub

Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
    Debug.Print Param1 & ", " & Param2
End Sub

РЕДАКТИРОВАТЬ: попробуйте это.

Public Sub TestThis()
    Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub

Public Sub MethodDynamically(MethodName As String, Optional params As String = "")
    If params = "" Then Application.Run MethodName
    Select Case selectParamNumbers(params)
        Case 0
        paramArr = paramSplit(params)
        Application.Run MethodName, paramArr(0)
        Case 1
        paramArr = paramSplit(params)
        Application.Run MethodName, paramArr(0), paramArr(1)
        Case 2
        paramArr = paramSplit(params)
        Application.Run MethodName, paramArr(0), paramArr(1), paramArr(2)
        'And so on...
   End Select
End Sub

Public Function paramSplit(param As String) As Variant
    paramSplit = Split(param, delimiter:=", ")
End Function

Public Function selectParamNumbers(param As String) As Long
    Dim paramAmount() As String
    paramAmount = Split(param, delimiter:=",")
    selectParamNumbers = UBound(paramAmount)
End Function

Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
    Debug.Print Param1 & " " & Param2
End Sub


1

David Feltendal
24 Ноя 2017 в 11:31

  • Remove From My Forums
  • Question

  • I am getting this error when debugging a VB application. The method that is being called when I get this does not have any arguments.

    Definitions in code are as follows with names changed to protect the guilty

    [From the ActiveX code]
    MyControlCtl.cpp(161): DISP_FUNCTION(CMyControlCtrl, «BadArgmentFunction», BadArgmentFunction, VT_I4, VTS_NONE)
    MyControlCtl.cpp(1213):long CMyControlCtrl::BadArgmentFunction()
    MyControlCtl.h(191): afx_msg long BadArgmentFunction();
    MyControlCtl.h(416): dispidBadArgmentFunction = 108L,

    [From VB application]
    Public Function BadArgmentFunction() As returnCodes
      On Error GoTo ErrHandler
      Dim lresult As Long

        oErrHandler.Message «TO», «BadArgmentFunction», «()»
      lresult = myControl.BadArgmentFunction  ‘ when this executes, I get the error «Run-time error ‘449’: Argument not optional»
      BadArgmentFunction= lresult
      oErrHandler.Message «TO», «BadArgmentFunction», «Returned » & CStr(BadArgmentFunction)
      Exit Function

      ErrHandler:
      oErrHandler.Message «Error», «BadArgmentFunction», Err.Description, Err.Number
      Resume Next

      End Function

    The question is, if the method is not defined to accept argments, then why am I having a debug assertion while debugging that says that the arguments are not optional?

Answers

  • Found the problem. It was that in the header file in one order where the afx_msg macro is interpreted and in the source file where the DISP_FUNCTION macro was interpreted, it was swapped with another function name that took a parameter.

    Kind of dicey if you ask me but oh well. Chock one up to experience.

    • Marked as answer by

      Monday, July 6, 2009 8:04 AM

Public Function RETURN_Equipment(Optional category As String) As Collection
    Dim config As classConfiguration
    Set config = New classConfiguration

    Dim item As classItem
    Set item = New classItem

    Dim myCollection As Collection
    Set myCollection = New Collection

    For Each config In Configurations
        For Each item In config.colItems
            If IsMissing(category) Then   
                myCollection.add item
            ElseIf InStr(category, "mainframe") <> 0 And item.category = "mainframe" Then
                myCollection.add item
                MsgBox "Fired!"                
            ElseIf category = "accessory" And item.category = "accessory" Then
            Else
            End If
        Next
    Next

    RETURN_Equipment = myCollection
End Function

I keep getting

Compile error:
Argument not optional

I get the error on the last line

RETURN_Equipment = myCollection

I understand the error message, its telling me I did not fill out a parameter. But I only have one parameter, and I’ve declared it optional. It looks like the code thinks I’m trying to call the function from the function?

What gives?

GSerg's user avatar

GSerg

75.5k17 gold badges158 silver badges342 bronze badges

asked May 9, 2014 at 21:14

Robomato's user avatar

3

Anytime you assign an object you need to use the set keyword.

set RETURN_Equipment = myCollection

answered May 9, 2014 at 21:16

Brad's user avatar

BradBrad

11.9k4 gold badges45 silver badges72 bronze badges

1

I was getting this error because I was using the wrong function name when trying to return a result from a function. I was doing this:

Function MyFuncA(arg as String)
    MyFuncB = arg 'The problem is I'm using MyFuncB instead of MyFuncA
End Function

This happened because I copied a function from somewhere else and changed the name, but not the return statement. This is not the OP’s problem, but I was getting the same error message.

answered Jul 8, 2016 at 19:15

user2023861's user avatar

user2023861user2023861

7,9509 gold badges57 silver badges85 bronze badges

Because you’ve specified the Optional Parameter as a string it will default to an empty string if you’ve not specified a value.

This means it can’t be missing

If you’d specified it as

Public Function RETURN_Equipment(Optional category) As Collection

It would be a variant and that could be missing, although you’d also be able to mess things up by passing non string variants as the category parameter

The best course of action is probably to replace

If IsMissing(category) Then 

with

If category = "" Then 

And as Brad has pointed out you’ll need to use Set

Set RETURN_Equipment = myCollection

For full details check this
http://msdn.microsoft.com/en-us/library/office/gg251721%28v=office.15%29.aspx

answered May 9, 2014 at 22:23

Tom Page's user avatar

Tom PageTom Page

1,2111 gold badge7 silver badges8 bronze badges

1

Я не мог понять, в чем проблема

Sub Reportstart(oEvent As Object)
Dim oFeld As Object
Dim oForm As Object
Dim oDocument As Object
Dim oDocView As Object
Dim Arg()
oField = oEvent.Source.Model
oForm = oField.Parent
sURL = oForm.DataSourceName
oDocument = StarDesktop.loadComponentFromURL(sURL, "C:UsersNamelessDesktopLatest.odb", 0, Arg() )
oDocView = oDocument.CurrentController.Frame.ContainerWindow
oDocView.Visible = False
oDocument.getCurrentController().connect
Wait(100)
oDocument.ReportDocuments.getByName("report_student").open
oDocument.close(True)
End Sub'

Ошибка — это ошибка времени выполнения BASIC. Аргумент не является обязательным.

1 ответ

Лучший ответ

Reportstart требует аргумента oEvent, и, как вы его выполнили, подпрограмме не было дано никакого аргумента.

Макрос был разработан для вызова из обработчика событий элемента управления, например, Execute action кнопки в базовой форме. Возможно, вместо этого вы выполнили подпрограмму из LibreOffice Basic IDE.

По теме: https://ask.libreoffice.org/en / question / 192344 / аргумент-не-необязательный /


0

Jim K
24 Июн 2020 в 17:53

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка времени выполнения basic 423
  • Ошибка времени выполнения basic 13 несовместимые типы
  • Ошибка времени трейлер ужасы
  • Ошибка времени трейлер отзывы

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии