Я никогда не использовал версию на английском языке, поэтому прости меня, если я плохо объясню вопрос.
Я работаю над старым приложением доступа VBA. Он имеет основную форму с именем Form_GUI
. Form_GUI
имеет несколько вкладок, каждая из которых имеет свою собственную «главную форму» и несколько разных подформ. Они создают FrontEnd. Все они связаны с различными таблицами BackEnd из другой базы данных.
Как я могу объявить переменную p_FrmZuordnung
глобально и так, чтобы я мог ссылаться на нее, когда я хочу внести некоторые изменения в Form1
или Form2
в другой форме, такой как Form3
?
Я хочу, чтобы подчиненные формы реагировали по-разному в зависимости от значения этой переменной.
Ниже приведены примеры того, что я хочу сделать с p_FrmZuordnung
.
То, что я пытался:
Я попытался объявить его как String и просто добавить его в код.
Public p_FrmZuordnung As String
Я попытался отделить его от формы следующим образом:
Public p_FrmZuordnung As Form
А затем настройте его так:
Set p_FrmZuordnung = Forms!Form1
И использовать его в другой форме, например Form3
:
p_FrmZuordnung!somecontrolelement.requery
Код, который я написал для идентификации страницы в основной форме, работает.
Код, который я написал для ссылки на переменную в форме, не.
Option Compare Database
Option Explicit
Public p_FrmZuordnung As Form
Public Sub p_ErmittleFrmZuordnung()
p_FrmZuordnung = "keine Zuordnung"
Select Case Form_Form_GUI.RegisterStr1.Pages(Form_Form_GUI.RegisterStr1.Value).Name
Case "pgeVerbMassnahmen"
Set p_FrmZuordnung = Forms("Form1")
Case "pgeKVPMassnahmen"
Set p_FrmZuordnung = Forms("Form2")
End Select
End Sub
Моя цель - использовать p_frmZuordnung
в других субформах, подобных этому, в Form3
:
Private Sub btnCancel_Click()
Me.Undo
DoCmd.Close acForm, "Form3", acSaveYes
p_FrmZuordung.somecontrolelement.Requery
Exit Sub
End Sub
Private Sub btnSaveAndClose_Click()
Me.txt_Kontrolle.Value = 1
If Me.Form.Dirty And Me.txt_Text.Locked = False Then
p_FrmZuordnung.txtHilfstextFokus.SetFocus
p_FrmZuordnung.Form.Dirty = True
Debug.Print p_FrmZuordnung.Form.Dirty
Me.Form.Dirty = False
End If
Me.txt_Kontrolle.Value = 0
DoCmd.Close acForm, "Form3", acSaveNo
Exit Sub
End Sub