0
4

3 に答える 3

1

FunctionForm のクラス モジュールで定義されSubたプロシージャは、そのフォームに対してプライベートであると見なされます。Sub複数の異なるフォームから呼び出すことができる が必要な場合は、それSubを「通常の」VBA モジュール (つまり、Insert > ModuleVBA エディターのメニュー バーから選択したときに作成されるモジュール) に移動し、必ず として宣言してPublicください。

于 2013-05-08T17:50:44.933 に答える
1

これは、メインフォームのボタンをクリックしたときにサブフォームの AllowEdits メソッドをトリガーするコードのスニペットです。これがあなたが求めているものであることは間違いありません。

Function ToggleEditStatus_Child(WhichForm, WhichChild As String)
 'Changes the AllowEdits setting of the SubForm parameter

 Dim Cform As Object

 Set Cform = Forms(WhichForm).Controls(WhichChild).Form
 Cform.AllowEdits = Not Cform.AllowEdits
 Forms(WhichForm).Refresh
 Cform.Refresh
 Forms(WhichForm).Controls(WhichChild).SetFocus
 Set Cform = Nothing

End Function
于 2013-05-09T18:48:45.230 に答える
0

私はこれを理解しましたが、落とし穴があります - 他のフォームが開いている必要があります。これは私にとってはうまくいったので、ここに解決策を投稿しています。

まず、フォームに移動します。

DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="SubformB", _
PathToSubformControl:="NavigationForm.NavigationSubform", _
DataMode:=acFormEdit

次に、サブフォームへのポインターを作成します。

Dim f As Form_SubformB
Set f = Forms("NavigationForm").NavigationSubform.Form

そして、あなたは自由にメソッドを呼び出すことができます:

f.MyMethod()

注: ほとんどの場合Public、これを機能させるにはメソッドを作成する必要があります。

于 2013-05-09T16:28:24.880 に答える