В общем, долго объяснять. Легче показать.
Допустим есть поле-чекбокс
"cbВорота1". Оно параллелится сразу в трёх субформах и во всех трёх должно иметь одинаковое значение, вне зависимости от того в какой из субформ происходили манипуляции с ним. При изменении этого поля в ЛЮБОЙ из трёх субформ, происходит следующее.
Sub SetParam(oEvent)
Dim oForms, oForm, sName
'******************************************
oForms = oEvent.Source.getModel().getParent().getParent()
sName = oEvent.Source.getModel().Name
'******************************************
Select Case sName
Case "cbВорота1"
oForm = oForms.getByName("ТОРЕЦ")
oForm.getByName("cbВорота1").State = oEvent.Source.State
oForm = oForms.getByName("ВОРОТА")
oForm.getByName("cbВорота1").State = oEvent.Source.State
oForm = oForms.getByName("ОБЩИЕ")
oForm.getByName("cbВорота1").State = oEvent.Source.State
End Select
End Sub
Т.е. - я уже не заморачиваюсь из какой субформы вызван этот макрос и даже какое значение приобрело поле, вызвавшее его. Я просто по oEvent беру его имя и значение и присваиваю его всем смежным полям во всех субформах.
Для списков, текстовых полей, цифровых код немного отличается, потому как у них нет метода - oEvent.Source.State.
Вот почему это для меня очень удобно использовать
oEvent. И не хочу это сильно менять.