2417 次
3 に答える
1
Function
Form のクラス モジュールで定義されSub
たプロシージャは、そのフォームに対してプライベートであると見なされます。Sub
複数の異なるフォームから呼び出すことができる が必要な場合は、それSub
を「通常の」VBA モジュール (つまり、Insert > Module
VBA エディターのメニュー バーから選択したときに作成されるモジュール) に移動し、必ず として宣言して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 に答える