2015-06-26 4 views
1

У меня есть форма X, которая содержит подформу Y. Существует процедура, которая определена в форме Y. Мне нужно вызвать эту процедуру из другой формы Z (которая открывается всякий раз, когда пользователь нажимает на какую-либо кнопку на подформе Y) при закрытии события этой формы Z. Форма X открыта. То, что я пытался до сих пор не работает:Вызов подпрограммы из другой формы

// в виде Z

Call Forms("X").SomeRoutine 
Call Forms("Y").SomeRoutine 

Но каждый раз, когда я получаю ошибки во время выполнения 2450, что доступ не может найти форму.

+0

Обратитесь к подформату http://access.mvps.org/access/forms/frm0031.htm, убедитесь, что функция sub/не является закрытой. – Fionnuala

+0

Убедитесь, что форма Sub является общедоступной (Public SomeRoutine() ...); Затем используйте Call MyForm.SomeRoutine, чтобы вызывать его вне формы. – gipadm

+0

yes sub/function является общедоступным. – vivek

ответ

2

Мой X форма включает в себя элемент управления подчиненной формы с именем Child1. Y - это форма, содержащаяся в качестве подформы в Child1.

Форма Y включает эту процедуру Public VBA:

Public Sub SomeRoutine() 
    Debug.Print "this SomeRoutine in form " & Me.Name 
End Sub 

С родительской формы (X) открыт в Форме View, я могу пойти в открывшееся окно (Ctrl + g) и позвоните по телефону SomeRoutine вот так ...

Forms!X!Child1.Form.SomeRoutine 
this SomeRoutine in form Y 

Ключевым моментом является то, что я использовал имя элемента управления подчиненной который содержит Y подчиненной. (Обратите внимание, что письмо Y отсутствует даже в Forms!X!Child1.Form.SomeRoutine)

Управляющее имя подформы может быть таким же, как имя формы, в которой оно содержится ... но оно не обязательно должно быть одинаковым. Проверьте, чтобы вы использовали имя элемента управления.

1

Это Forms!X!Y.Form.SomeRoutine - вы должны явно обратиться форме

Смежные вопросы