Подпрограмма или функция не определена, ошибка vba excel

Обновлено: 21.11.2024

Ошибка компиляции: подпрограмма или функция не определены

Добрый день, буду признателен за помощь. Я новичок и получаю сообщение «Ошибка компиляции: подпрограмма или функция не определена» при выполнении моего макроса. Я не понимаю, как VBA проецирует, модули, сабвуферы, макросы и функции. публичное и частное. все связаны - даже потратив некоторое время на чтение определений в Интернете - но некоторые части работают, а эта часть - нет. Кажется непоследовательным. «Execute_Scenario» работает, а «Sale_Scenarios» — нет. Я передаю аргументы обоим. Я прикрепил свой код и скриншоты ошибок и сообщение о компиляции, но на высоком уровне мой процесс выглядит следующим образом.

MODULE4
Sub Execute_ScenarioResults()Call Execute_Scenario(столбец)Call Sale_Scenarios(столбец, строка, SaleMonths)
End Sub

Sub Execute_Scenario(столбец ByVal как целое число)Call IRR_Solver("Предположения", "Model_IRR", "NPV_for_IRR_Solver")
End Sub

Sub Sale_Scenarios (столбец ByVal как целое число, строка ByVal как целое число, ByVal SaleMonths как Long) Call IRR_Sale_Scenarios
End Sub

MODULE1
Sub IRR_Solver(Лист ByVal как строка, ByVal IRR как строка, ByVal NPV как строка)
End Sub

MODULE3
Sub IRR_Sale_Scenarios()Call IRR_Solver(Sheet, IRR, NPV)
End Sub

Гуру форума Регистрация 15.07.2010 Местоположение The Great City of Manchester, NW England ;-) MS-Off Ver MSO 2003,2007,2010 Сообщений 35,592

Я действительно не вижу смысла загружать документ Word с кодом VBA для книги Excel. что вам не подходит.

Как бы вы хотели, чтобы мы протестировали его, диагностировали проблему и предложили решение? Без книги, без листов, без данных, без формул, без кода (в домашней среде).

Если вы можете загрузить документ Word, было бы разумнее загрузить книгу Excel.

Я мечтаю о лучшем мире, где цыплята смогут переходить дорогу, и их мотивы не будут подвергаться сомнению

"Не извиняться — значит никогда не извиняться" Джон Купер Кларк

Как исправить ошибку компиляции: подпрограмма или функция не определена

Что может быть хуже ошибки времени выполнения в Excel VBA? Ошибка компиляции. Это связано с тем, что фактическая ошибка не всегда выделяется, а открывается оператор Sub или Function. «Подпрограмма или функция не определена» указывает на ошибку компиляции. VBA отображает это сообщение, когда не может найти то, на что ссылается имя. В этой статье приведены несколько примеров этой ошибки компиляции и способов их исправления.

VBA компилируется (переводится) на машинный язык перед выполнением. Ошибки компиляции останавливают процесс компиляции до выполнения процедур.

Рекомендация: чаще проверяйте наличие ошибок компиляции в VB Editor. В меню «Отладка» выберите «Скомпилировать VBAProject». Отсутствие новостей — это хорошая новость, когда кажется, что ничего не происходит.

Проблема 1: опечатки

Опечатки – наиболее частая причина появления сообщения "Подпрограмма или функция не определена". Если Excel выделяет (желтым или серым цветом) ключевое слово или процедуру, которые он не может найти, у вас есть отличный старт для игры в прятки.

Рекомендация: следуйте соглашению Microsoft об именах и всегда добавляйте по крайней мере одну заглавную букву при создании имени (исключение: переменные-счетчики, такие как n). Всегда вводите имя строчными буквами. Когда вы выходите из заявления, а имя остается в нижнем регистре, вы нашли опечатку.

Вопреки своему сообщению, «Подпрограмма или функция не определена» не ограничивается процедурами. Оператор ниже вызывает это сообщение. Сможете найти опечатку?

Рабочие листы — это обязательное ключевое слово. Объект рабочего листа «Сводка» является членом коллекции «Рабочие листы». Коллекция Worksheets содержит все объекты рабочего листа книги. Excel VBA имеет несколько коллекций.

Совет. Все коллекции VBA заканчиваются буквой "s": книги, листы, ячейки, диаграммы и т. д.

Проблема 2: Функции рабочего листа

VB Editor может быть за кулисами перед рабочими листами, но не все реквизиты рабочих листов были перенесены за кулисы. Эти «реквизиты» — это функции, которых нет в VBA. Функции рабочего листа, такие как CountA, вызывают «Подпрограмма или функция не определена»:

Объект WorksheetFunction — это «рука сцены», которая позволяет вам вызывать функции рабочего листа из VBA, например:

Проблема 3: Отсутствует процедура

Реже вызванная процедура действительно отсутствует. После того, как вы проверите наличие опечаток и убедитесь, что закодировали вызываемую процедуру, возможно, вам не хватает библиотеки. Следующим местом для поиска являются Инструменты, Ссылки.

В меню "Инструменты редактора VB" выберите "Ссылки". Откроется диалоговое окно Ссылки. Если VBA определил отсутствующую библиотеку, последняя отмеченная галочкой библиотека будет начинаться с MISSING, за которым следует ее имя.В большинстве случаев можно просто прокрутить список библиотек в алфавитном порядке и отметить отсутствующую библиотеку, а затем нажать кнопку "ОК".

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

Проект Solver не добавляется в VBA при включении надстройки Solver, как показано ниже. В Solver проект находится в верхней части списка ссылок, поэтому вам не нужно прокручивать страницу вниз, чтобы найти его.

Ваши собственные книги макросов могут вести себя как Solver. Каждая книга Excel имеет встроенный проект VBAProject. Видите MyFunctions на скриншоте выше? MyFunctions — это просто VBAProject, переименованный в книгу макросов. Рабочая книга открыта, поэтому подпрограммы в MyFunctions запускаются с вкладки «Разработчик». Даже в этом случае «Подпрограмма или функция не определена» возникает, когда MyFunctions не проверяется, а процедура вызывается из другого макроса. Просто проверьте его проект как доступную ссылку.

Рекомендация: присваивайте своим проектам VBA понятные имена. В Project Explorer щелкните правой кнопкой мыши книгу макросов. Выберите VBAProperties, затем введите имя проекта без пробелов.

Проблема 4: недоступные процедуры

"Подпрограмма или функция не определена" также возникает, когда процедура недоступна для вызывающей процедуры в той же книге. Эта ошибка связана с публичными и частными процедурами. По умолчанию Sub и Functions в стандартных модулях папки Modules (отображаемой в Project Explorer) являются общедоступными. Стандартные процедуры могут быть вызваны любой процедурой в проекте. Вы можете сделать процедуру частной, добавив ключевое слово Private, например:

Инициализация частной подпрограммы()

Совет. Все макросы, отображаемые в диалоговом окне "Макросы" на вкладке "Разработчик", являются общедоступными. В список не включены общедоступные функции.

Подпрограммы и функции в модулях рабочего листа являются частными. Их можно вызывать только из рабочего листа (например, нажатием кнопки) или другой процедуры в этом модуле. То же самое относится и к пользовательским формам.

Вы можете исправить «Подпрограмма или функция не определена», удалив ключевое слово Private из процедуры в стандартном модуле. К сожалению, вы не можете исправить вызов процедуры в модуле рабочего листа из другого модуля. Подумайте о стандартных модулях, таких как общественные парки, и модулях рабочих листов, таких как частная собственность. Посягательство запрещено!

Проблема 5. Объявление подпрограммы, которой нет в указанной библиотеке DLL

Подпрограмма, которую вы пытаетесь использовать, может быть частью библиотеки DLL, на которую необходимо сослаться. Таким образом, если вы не объявите DLL или объявите неправильную, компилятор не найдет подпрограмму или функцию, которую вы пытаетесь использовать.

DLL – это динамически подключаемая библиотека, состоящая из скомпилированного кода, предназначенного для предоставления некоторых функций или данных исполняемому приложению (например, проекту VBA, с которым мы работаем). Динамическая библиотека загружается проектом VBA по мере необходимости. Библиотеки DLL используются для экономии времени разработчиков за счет использования построенных и протестированных тел кода.

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

Объявить Sub sub_name Lib «library_name»

Проблема 6. Забыли написать

В конце концов, возможно, его просто еще не написали!

Если вы понимаете, что подпрограмма, которая была выделена для вас компилятором VBA, не существует, решение состоит в том, чтобы создать ее. Чтобы узнать, существует ли он или нет, просто найдите его на уровне проекта с помощью инструмента «Найти» в VBA IDE.

Выбор области «Текущий проект» позволит вам искать подпрограмму во всей книге. Вы также можете сделать это для других книг, в которых может находиться подпрограмма.

Подведение итогов

«Подпрограмма или функция не определена» — это ошибка компиляции, возникающая, когда VBA не может найти процедуру или другую ссылку по имени. Опечатка является наиболее частой причиной появления этого сообщения.

Как исправить ошибку компиляции или функция не определена?

Чтобы исправить эту ошибку, убедитесь, что имя процедуры написано правильно. Найдите имя проекта, содержащего процедуру, которую вы хотите вызвать, в диалоговом окне «Ссылки». Если он не отображается, нажмите кнопку «Обзор», чтобы найти его. Установите флажок слева от имени проекта и нажмите кнопку "ОК".

Что такое ошибка компиляции или функция не определена?

«Подпрограмма или функция не определена» — это ошибка компиляции, возникающая, когда VBA не может найти процедуру или другую ссылку по имени. Опечатка является наиболее частой причиной появления этого сообщения.

Как изменить ссылки в VBA?

В меню "Инструменты" нажмите "Ссылки" и добавьте ссылку на библиотеку Microsoft Visual Basic for Applications Extensibility 5.3. Эта библиотека содержит объекты, которые ссылаются на проекты VBA. Прежде чем нажать кнопку "ОК", необходимо убедиться, что новая ссылка добавлена ​​над "отсутствующей" ссылкой.

Как удалить ссылку в VBA?

Удалить ссылку на проект VBA

  1. Изображение 2. Выбор правильной версии PDFCreator.
  2. Изображение 3. При повторном открытии меню видно, что выбрана неправильная версия PDFCreator.

Можем ли мы удалить используемую ссылку или элемент управления?

Почему ссылка VBA выделена серым цветом?

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

Что такое ссылки в Excel VBA?

Список ссылок VBA (рис. 1) можно открыть, выбрав в меню Инструменты > Ссылки. Список доступных ссылок отображает каждый элемент ссылки по его свойству описания в порядке приоритета. Ссылки также являются частью раскрывающегося списка библиотек в обозревателе объектов (рис. 2).

Как вы ссылаетесь на ячейку в макросе?

Если объект Excel VBA Range, на который вы хотите сослаться, представляет собой одну ячейку, используйте простой синтаксис «Range(«Cell»)». Например, если вы хотите сделать ссылку на одну ячейку, такую ​​как A1, введите «Диапазон («A1»)».

Какой тип данных может содержать значения любого типа в VBA?

Целое число: целое число — это бета-версия типа данных byte, которое может содержать значения в диапазоне от -32 768 до 32 768. Любые значения, превышающие этот диапазон, возвращают ошибку.

Как иначе называются ключевые слова в VB A?

В Visual Basic . NET, ключевые слова зарезервированы; то есть их нельзя использовать в качестве токенов для таких целей, как именование переменных и подпрограмм….Ключевые слова.

Ключевое слово Описание
Псевдоним Используется в объявлении оператор
And Булев оператор
AndAlso Булев оператор< /td>
Ansi Используется в операторе Declare

Какие пять ключевых слов есть в базовой версии?

Типичные ОСНОВНЫЕ ключевые слова

  • Манипулирование данными.
  • Управление потоком программы.
  • Ввод и вывод.
  • Математические функции.
  • Разное.
  • Неструктурированный БАЗОВЫЙ.
  • Структурированный БАЗОВЫЙ.
  • Объектно-ориентированный BASIC.

Как узнать, сколько раз выполняется цикл?

Формула для расчета количества повторений внутреннего цикла – это количество повторений внешнего цикла, умноженное на количество повторений внутреннего цикла.

Оглавление

Как исправить ошибку компиляции или функция не определена?

Чтобы исправить эту ошибку

  1. Убедитесь, что имя процедуры написано правильно.
  2. Найдите имя проекта, содержащего процедуру, которую вы хотите вызвать, в диалоговом окне «Ссылки». Если он не отображается, нажмите кнопку "Обзор", чтобы найти его.
  3. Проверьте название подпрограммы.

Как исправить неопределенный пользовательский тип?

Вы можете решить эту проблему одним из двух способов:

  1. Включите ссылку на объектную модель Microsoft Word. Сделайте это из Инструменты | Ссылки, затем добавьте ссылку на MS Word.
  2. В качестве альтернативы, чтобы использовать метод позднего связывания, вы должны объявить объекты как общий тип объекта: Dim oTable как Object, oRow как Object .

Как определить подпрограмму или функцию в VBA?

Подпрограмма VBA и функция: основные различия Подпрограмма выполняет задачу, но не возвращает значение. Функция возвращает значение выполненных задач. Подпрограммы могут быть вызваны из любой точки программы и в нескольких типах. Функции вызываются переменной.

Как исправить ошибки компиляции в VBA?

Ошибка компиляции: не удается найти проект или библиотеку

  1. Откройте базу данных или приложение.
  2. Откройте модуль в представлении «Дизайн» или нажмите клавиши ALT+F11, чтобы переключиться в редактор Visual Basic.
  3. В меню "Инструменты" нажмите "Ссылки".
  4. Снимите флажок для библиотеки типов или библиотеки объектов, отмеченной как "Отсутствует":

Что означает, что подпрограмма или функция не определены?

«Подпрограмма или функция не определена» — это ошибка компиляции, возникающая, когда VBA не может найти процедуру или другую ссылку по имени. Опечатка является наиболее частой причиной появления этого сообщения.

Что означает неопределенная переменная в VBA?

Эта ошибка имеет следующую причину и решение: вы использовали оператор Option Explicit, чтобы потребовать явного объявления переменных, но использовали переменную без ее объявления. Явно объявите переменную или измените написание переменной, чтобы она соответствовала написанию предполагаемой переменной.

Что такое определяемый пользователем тип, не определенный в VBA?

Тип допустим, но библиотека объектов или библиотека типов, в которой он определен, не зарегистрирована в Visual Basic. Например, если вы не отметите объект доступа к данным в диалоговом окне «Ссылки», такие типы, как Database, Recordset и TableDef, не будут распознаны, и ссылки на них в коде вызовут эту ошибку.

В чем разница между подпроцедурой и функцией?

Функции, возвращающие значения после обработки, называются функциями, а функции, не возвращающие значения, называются подпроцедурами. Процедура Sub выполняет задачу, а затем возвращает управление вызывающему коду, но не возвращает значение вызывающему коду.

Что означает, что подпрограмма или функция не определены?

Что означает подпрограмма или функция, не определенная в VBA?

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

Что вызывает ошибку компиляции или функция не определена?

«Подпрограмма или функция не определена» — это ошибка компиляции, возникающая, когда VBA не может найти процедуру или другую ссылку по имени. Опечатка является наиболее распространенной причиной появления этого сообщения. См. также: Ошибка компиляции: ожидаемый конец оператора и Ошибка компиляции: определяемый пользователем тип не определен Дополнительная помощь от Махмуда Мостафы

Что делать, если в VBA нет ошибки?

В последнем случае ошибка не возникает, но возвращаемое значение является вариантом ошибки. Эта последняя форма обычно более безопасна для VBA, потому что вам не нужно иметь какое-то продолжение при ошибке «Далее» или около того, но вы можете просто проверить результат с помощью If (IsError (результат)).

Является ли функция VBA VLOOKUP или WorksheetFunction?

1- VLookup не является функцией VBA сама по себе, это метод-член либо объекта Application, либо объекта WorksheetFunction. Таким образом, вы должны квалифицировать VLookup любым из них, даже если он был внутри другого метода, такого как WorksheetFunction.IfError (…). 2- Одни и те же методы в WorksheetFunction и в объектах Application работают по-разному.

Как определить определяемый пользователем тип в VBA?

Операцию Type можно использовать только на уровне модуля. После того как вы объявили пользовательский тип с помощью оператора Type, вы можете объявить переменную этого типа в любом месте в пределах области действия объявления. Используйте Dim, Private, Public, ReDim или Static для объявления переменной пользовательского типа.

В чем разница между Macro и VBA?

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

Что означает VBA в Excel?

Visual Basic для приложений
Visual Basic для приложений работает как внутренний язык программирования в приложениях Microsoft Office (MS Office, Office), таких как Access, Excel, PowerPoint, Publisher, Word и Visio.

Что такое тип ошибки, определяемый пользователем, не определен?

В VB6 возникает ошибка компиляции «определяемый пользователем тип не определен», когда я пытаюсь скомпилировать этот код. Кто-нибудь может сказать мне, что мне нужно сделать, чтобы решить эту ошибку?

Почему ошибка компиляции не определена в Excel?

Я думал, что это проблема со ссылкой, но я нашел FM20.DLL, и она все еще не работает. Это ошибка, которая появляется, когда ссылка отсутствует. Попробуйте изменить способ инициализации приложения Excel, используя это:

Как выделить пользовательский тип, не определенный в Visual Basic?

Visual Basic выделит строку кода, которая содержит определяемый пользователем тип, который не определен. После решения проблемы бинарную совместимость можно снова включить. Я нашел эту статью через этот вопрос и ответ, однако я не могу найти эту опцию в стандартном редакторе Excel VBA. Помогите спасти мой и чужой рассудок!

Почему я получаю сообщение об ошибке при компиляции проекта ADO?

При компиляции проекта ADO появляется следующая ошибка: Это может произойти либо с объектом Connection, либо с объектом Command. Вместо библиотеки типов Microsoft ActiveX Data Objects (ADODB) вы могли сослаться на одну из следующих библиотек: Библиотека типов Microsoft ActiveX Data Objects Recordset (ADOR).

Как определить функцию в VBA?

Самый распространенный способ определить функцию в VBA – использовать ключевое слово Function, за которым следует уникальное имя функции. Оно может содержать или не содержать список параметров и оператор с ключевым словом End Function, указывающим на конец функции. функция. Ниже приведен основной синтаксис.

Каковы различные типы методов обработки ошибок VBA?

В Excel VBA существует четыре типа ошибок:

  • Синтаксические ошибки.
  • Ошибки компиляции.
  • Ошибки выполнения.
  • Логические ошибки.

Как вызвать пользовательскую функцию в VBA?

Вызов пользовательской функции Excel VBA

  1. Шаг 1. Откройте новую книгу Excel.
  2. Шаг 2. Нажмите клавиши ALT + F11. Откроется редактор VBA (также его можно открыть на вкладке "Разработчик" на ленте Excel).
  3. Шаг 3. Вставьте модуль кода из меню вставки VBE.

Как функция возвращает значение в VBA?

Чтобы вернуть значение с помощью Exit Function или End Function

  1. По крайней мере в одном месте процедуры Function присвойте значение имени процедуры.
  2. Когда вы выполняете оператор Exit Function или End Function, Visual Basic возвращает значение, которое последним было присвоено имени процедуры.

Почему VBA не запустит подпрограмму ошибки компиляции или функция не определена?

Как проверить подпрограмму или функцию, не определенную в Visual Basic?

Убедитесь, что имя процедуры написано правильно. Найдите имя проекта, содержащего процедуру, которую вы хотите вызвать, в диалоговом окне «Ссылки». Если он не отображается, нажмите кнопку «Обзор», чтобы найти его. Установите флажок слева от имени проекта и нажмите кнопку ОК. Проверьте имя подпрограммы.

Что делать, если вы получаете ошибку компиляции в Excel?

<р>1. Откройте среду разработки Microsoft Visual Basic, связанную с используемой вами версией Excel. Как правило, вы можете просматривать в Excel, перейдя на вкладку «Разработчик» и щелкнув значок «Visual Basic» (возможно, первый значок слева). В противном случае Alt + F11 — это еще один ярлык для открытия этой утилиты. 2.

Что вызывает ошибку или функция не определена?

"Подпрограмма или функция не определена" также возникает, когда процедура недоступна для вызывающей процедуры в той же книге. Эта ошибка связана с публичными и частными процедурами. По умолчанию Sub и Functions в стандартных модулях папки Modules (отображаемой в Project Explorer) являются общедоступными.

VBAX Regular Зарегистрирован, март 2014 г. Сообщения 18 Местоположение

Подпрограмма или функция не определена, справка по ошибке компиляции

Я пытаюсь изучить и понять VBA. Поэтому я пытаюсь понять, как передать переменную в качестве аргумента. Я нашел этот пример в Интернете. Он показывает, как вы можете передать аргумент из подпрограммы в приватную подпрограмму, но когда я запускаю ее, все, что я получаю, это «Ошибка компиляции: подпрограмма или функция не определена», и я не понимаю, почему я получаю эту ошибку. Я скопировал именно так, как было у них.
Я предполагаю, что следующий код вызывает сообщение об ошибке, потому что выделено "Call SecondCode".

VBAX Tutor присоединился к нам в марте 2007 г. Местонахождение Чикаго Сообщения 276 Местоположение

VBAX Regular Зарегистрирован, март 2014 г. Сообщения 18 Местоположение

VBAX Regular Присоединился к нам с декабря 2007 г. Местонахождение Олстонвилл, Австралия Сообщения 96 Местонахождение

VBAX Regular Зарегистрирован, март 2014 г. Сообщения 18 Местоположение

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

VBAX Sage Присоединился к нам в апреле 2007 г. Сообщений: 8 184 Местоположение

Я думаю, что проще всего просто использовать переменную Public для хранения таких вещей

В стандартном модуле


В модуле кода UserForm1


Помните: расскажите нам, ЧТО вы хотите сделать, а не КАК вы думаете, что хотите это сделать

VBAX Regular Зарегистрирован, март 2014 г. Сообщения 18 Местоположение

Просто думаю наперед. Так много еще вопросов.
1. Можно ли передать значение, хранящееся в переменной, расположенной в приватной подпрограмме, другим приватным подпрограммам?
2. Это также даст ошибку компиляции? Еще не пробовал.
3. Было бы лучше преобразовать частную подписку, например кнопку команды в пользовательской форме, в общедоступную подписку для передачи значений?

VBAX Master Присоединился к сент. 2009 г. Местоположение Великобритания Сообщений 1598 Местоположение

Нет абсолютно ничего плохого в общедоступных процедурах. С другой стороны, общедоступные переменные следует использовать как можно реже.

VBAX Sage Присоединился к нам в апреле 2007 г. Сообщений: 8 184 Местоположение

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


Помните: расскажите нам, ЧТО вы хотите сделать, а не КАК вы думаете, что хотите это сделать

VBAX Master Присоединился к сент. 2009 г. Местоположение Великобритания Сообщений 1598 Местоположение

VBAX Regular Зарегистрирован, март 2014 г. Сообщения 18 Местоположение

Я пока новичок на этом сайте. Поэтому я не уверен, каковы правила форума, потому что приведенный ниже код относится к теме, которую мы обсуждали в отношении передачи значений. Если я ошибаюсь, дайте мне знать, и я отпишусь в другой теме. Спасибо.
Вот почему я спросил, как передавать значения. В приведенном ниже коде переменную sPrdCde необходимо передать другим формам и модулю из этой формы. Именно поэтому я упомянул о передаче значения с помощью командной кнопки.
Приведенный ниже код отображается первым.

Приведенный ниже код появляется вторым и относится к модулю, в котором я объявил sPrdCde.

Кроме того, я не уверен, почему объявленные общедоступные переменные в приведенном ниже коде не передаются в frmAddProduct и по какой причине мне пришлось снова объявлять sPrdCde

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

Привет всем,
При попытке выполнить мою программу я получаю беспорядок "Подпрограмма или функция
не определена"
Выделено слово: "FindWindow"
Может ли кто-нибудь сказать мне, на какой элемент я должен ссылаться в списке литературы?
Любая помощь очень ценится.
Спасибо,
Ронни
Открытая функция DetectExcel()
' Процедура обнаруживает запущенный Excel и регистрирует его.
Const WM_USER = 1024
Dim hWnd As Long
' Если работает Excel, этот вызов API возвращает свой дескриптор.
hWnd = FindWindow("XLMAIN", 0)
Если hWnd = 0, тогда ' 0 означает, что Excel не запущен.
Функция выхода,
иначе
' Excel запущен, поэтому используйте функцию SendMessage API
', чтобы ввести его в таблицу запущенных объектов.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Function

Привет всем,
При попытке выполнить мою программу я получаю беспорядок "Подпрограмма или функция не
определена"
Выделено слово: "FindWindow"
Может ли кто-нибудь сказать мне, на какой элемент я должен ссылаться
справочного списка? Любая помощь очень ценится.
Спасибо,
Ронни
Открытая функция DetectExcel()
' Процедура обнаруживает запущенный Excel и регистрирует его.
Const WM_USER = 1024
Dim hWnd As Long
' Если работает Excel, этот вызов API возвращает свой дескриптор.
hWnd = FindWindow("XLMAIN", 0)
Если hWnd = 0, тогда ' 0 означает, что Excel не запущен.
Функция выхода,
иначе
' Excel запущен, поэтому используйте функцию SendMessage API
', чтобы ввести его в таблицу запущенных объектов.
SendMessage hWnd, WM_USER + 18, 0, 0
Конец, если
Конец функции

Обратите внимание на эту строку:
"Если Excel работает, этот вызов API возвращает его дескриптор".

Когда вы копировали этот код, вероятно, вы пропустили это (возможно, что-то еще)

Частная функция объявления FindWindow Lib "user32" Псевдоним "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long

Читайте также: