Первое спасибо @JosephC и @Damian за то, что они опубликовали для меня ответ в комментариях.
От JosephC 'Ключевые слова, которые вы ищете: «Как передать аргументы в функцию».', И он предоставил следующую ссылку ByRef vs ByVal , описывающую два различных способа передачи аргументов в вызове функции.
И от Дамиана решение моей непосредственной проблемы. Вместо объявления и установки объектов, которые будут использоваться в теле вспомогательной функции. Поместите имена и типы объектов в скобки исходного имени помощника, а при вызове помощника из другой функции также в скобках, как показано ниже.
Option Explicit
Public Sub gather_data()
Dim TN_Emulator As Object
Dim Workbook As Object
Set TN_Emulator = CreateObject("TN_Emulator.Program")
Set Workbook = ActiveWorkbook
Dim string_from_excel As String
#for loop to go through table rows
#put value in string_from_excel
If string_from_excel = some condition
Call go_to_screen_2(TN_Emulator)
#grab and put data back in excel
Else
Call go_to_screen_3(TN_Emulator)
#grab and put data back in excel
End If
Call go_to_screen_1(TN_Emulator)
#next loop logic
End Sub
Public Sub go_to_screen_1(TN_Emulator As Object)
#send instructions to the emulator
End Sub
Мне кажется, я правильно понял инструкции и успешно проверил это на себе. Я также передал несколько объектов в определении вспомогательной функции и вызовы, необходимые для моего реального приложения, в том же порядке каждый раз, например.
Sub go_to_screen_1(TN_Emulator As Object, ConnectionName As Object)
и
Call go_to_screen_1(TN_Emulator, ConnectionName)