5

私のMSAccessアプリケーションでは、テキストボックスとコマンドボタンの2つのコントロールのみを含むフォームを使用しています。このフォームの名前はHEADER FORM

HEADER FORM他のさまざまなフォームのヘッダーセクションでサブフォームとして使用されます。

私がやりたいのは、特定のフォームが読み込まれるたびに、HEADER FORM(ログインした人の名前になります。下の画像からも同じことがわかります)のテキストボックスに詳細を入力したいということです。

updateHeaderすべてのフォームのフォームロードイベントで指定されたグローバルサブルーチンを呼び出そうとしています。

Public Sub updateHeader()
    Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
End Sub

以下は、HEADER FORMデザインビューに表示されている画像で、ログインフォームのサブフォームとして使用されているものと同じです。

ここに画像の説明を入力してください

他のさまざまなオプションを試しましたが、フォームを参照する正しい方法を見つけることができません。私は根本的に何か間違ったことをしていますか?

私が見ているエラーは、Meキーワードの無効な使用です。また、私のupdateHeaderサブルーチンは、すべてのフォームのForm_Loadイベントから呼び出されるグローバルサブルーチンです。

4

2 に答える 2

3

手順が標準モジュールに含まれている場合、それはキーワード updateHeader()に関する苦情を説明します...それは標準モジュールでは無効です。Me

フォームモジュールでは、 Me「このフォーム」を意味します。

フォームへの参照を受け入れるようにプロシージャ宣言を変更できます。

Public Sub updateHeader(ByRef TheForm As Form)
    ' Me![HEADER FORM].Form.txtHeaderName.Value = strPerson
    TheForm![HEADER FORM].Form.txtHeaderName = strPerson
End Sub

.Valueはデフォルトのプロパティであるため、ここでは必要ないため、省略しました。ただし、必要に応じて追加し直しても問題ありません。

次に、親フォームからプロシージャを呼び出し、プロシージャをそれ自体(親フォーム)への参照に渡すことができます。

updateHeader Me
于 2012-11-06T07:23:29.483 に答える
0

Wiley.Microsoft.Office.Access.2007.Bibleからこれらの「構文バージョン」を入手しました。サブフォームコントロールを参照する場合:

Forms![FormName]![SubformName] .Form![ControlName]

サブフォーム内でサブフォームを使用/参照する場合は、次の構文を使用してください: Forms![FormName]![SubformName] .Form![SubSubformName].Form。[ControlName]

于 2017-03-15T09:27:37.763 に答える