Давайте все же продолжим обсуждение, хотя вопрос для задавшего его уже, похоже, давно решен.
Сразу оговорим, что простейшие способы передачи известны, интереса, как правило, не представляют и состоят всего в двух способах, которые строго предполагают наличие программ в одном и том же (общем) scope — зоне видности на этапе компиляции. Они таковы:
— через "голову",
— через заранее выделенное место в зоне видности.
Все модификации передачи через "голову", включая опускаемые фактические параметры, их передачу/получение по ссылке (адресу) или величине — опускаем. Так же поступим с хранением полученных данных при динамическом/статическом распределении памяти.
Интерес представляют оставшиеся способы, из которых типовыми являются передачи в программы нестандартных библиотек или стандартных, но отсутствующих в момент компиляции, написанные на других языках программирования, не поддерживающих соглашения о связях.
Особо в стороне стоят способы передачи данных в программы, вызываемые по допустимым для VBA прерываниям, например, по таймеру (туда) или окончанию ввода формы (обратно) а также при возникновении рекурсивного вызова, если одновременно в памяти "висят" несколько копий или единственная копия вызываемой программы — случай, когда программист должен сам предвидеть результаты такого вызова, которые он может захотеть использовать предосудительным (из-за возникающих при чтении текста головоломок) образом.
Однако, если он пишет для себя, это сойдет — максимум, что ему грозит — забыть то, что и как сделал: останется "вещь в себе" без малейшей практической возможности модификации или сопровождения. Однако через этот этап фокусника проходят многие, и такой способ передачи также представляет интерес: выявляет скрытые механизмы передачи параметров.
При изложении желательно использовать не систематический, а концентрический подход: сразу кратко охватить все.
|