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

В этой статье представлена ошибка с номером Ошибка 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

 

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

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

Сообщений: 535
Регистрация: 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

 

БМВ

Модератор

Сообщений: 21682
Регистрация: 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

 

БМВ

Модератор

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

Excel 2013, 2016

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

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

 

bigorq

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

Сообщений: 821
Регистрация: 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 не работает нормально.

 

Юрий М

Модератор

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

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

#12

05.04.2023 12:47:06

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

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

  • 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

You got 2 options.

1 split the string «This doesnt, work into 2 params

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

or use optional params:

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

EDIT:
try this.

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

w1nterdreams, почитайте похожая проблема была

Кликните здесь для просмотра всего текста

Не вопрос, а просто для информации, может кому-то поможет.
В экселе был скрипт для автоматического заполнения текущим временем ячеек на листе в той же строке, со сдвигом по столбцам:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range(«A2:A900000»)) Is Nothing Then
With cell.Offset(0, 8)
.Value = Now
.EntireColumn.AutoFit
End With
End If
If Not Intersect(cell, Range(«H2:H900000»)) Is Nothing Then
With cell.Offset(0, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
Next cell
End Sub

(Правой кн м на листе — Просмотреть код — вставляется в код нужного листа).

Потребовалось воспроизвести аналогичный функционал в LibreOffice 6.2.8.2 Calc:
Через управление макросами создал модуль в Standard книги.ods и выше Sub Main вставил 2 функции:
Sub AddChartDataListener()
oCell1 = ThisComponent.getSheets().getByIndex(0).getCellRangeByName(«A2:A90000»)
oListener = CreateUnoListener(«MyApp_», «com.sun.star.chart.XChartDataChangeEventListener»)
oCell1.addChartDataChangeEventListener(oListener)
oCell2 = ThisComponent.getSheets().getByIndex(0).getCellRangeByName(«H2:H90000»)
oListener2 = CreateUnoListener(«MyApp_», «com.sun.star.chart.XChartDataChangeEventListener»)
oCell2.addChartDataChangeEventListener(oListener2)
End Sub

Sub MyApp_chartDataChanged(oEvent)

oSel = ThisComponent.getCurrentSelection()
oCellAddress = oSel.getCellByPosition(0, 0).getCellAddress()
oSheet = ThisComponent.CurrentController.ActiveSheet()

if oCellAddress.Column = 0 Then
OffsetCell = oSheet.getCellByPosition(oCellAddress.Column + 8, oCellAddress.Row)
OffsetCell.Value = Now()
End If
if oCellAddress.Column = 7 Then
OffsetCell = oSheet.getCellByPosition(oCellAddress.Column + 2, oCellAddress.Row)
OffsetCell.Value = Now()
End If

End Sub

Затем правой кн м на листе — События листа. Событию «Содержимое изменено» назначен макрос AddChartDataListener.
(Безопасность выставлена в средний уровень: при открытии книги спрашивает, включать ли макросы).

Для изменяемых колонок I и J заранее выбрал формат дата+время. Есть нюанс. Когда задаётся адрес строки в автоматически заполняемой Now() ячейке из I или J: в варианте oCellAddress.Row макрос корректно реагирует на автовставку даты с помощью Ctrl+ж. Если же ячейка редактируется вручную, то результат появляется на следующей строке (а сдвиг по столбцам правильный).
Если сделать oCellAddress.Row-1, то при ручном вводе изменяется нужная ячейка, но при автовставке затирается значение строкой выше.

  • Ошибка времени выполнения basic 13 несовместимые типы
  • Ошибка времени выполнения bad typed file size
  • Ошибка времени виндовс 7 какое обновление
  • Ошибка времени википедия фильм сюжет
  • Ошибка времени бюджет фильма