へっぽこヘタレシステム管理者の管理人です。
さて、ACCESSでごにょごにょとシステムを作っていると・・・
ちょっとしたことで躓くことが結構あります。
その代表的なものがコントロールの選択で【!】を使うか【.】を使うかです。
ACCESS-VBA【!】と【.】のどっちを使う?
たとえば、フォーム内のコントロールを選択する場合ですが・・・
次の2つ記述ができます。【テキストボックス】を指定する場合
- Forms!フォーム名!テキストボックス.SetFocus
- Forms.フォーム名.テキストボックス.SetFocus
これで、動く場合もありますが、エラーが出るときもあります。
サブフォームのコントロールを選択する場合・・・
で、イロイロと試したのですが・・・
例えば・・・・
下のコードは・・・
別のフォームから【test_form1】のサブフォーム【test_form1_sub1】の【textbox1】を選択するコードですが・・・・
コントロールを選択するまでは全て【!】で繋げています。
これだとエラーはでません。
Private Sub コマンド0_Click()
DoCmd.OpenForm "test_form1"
Forms!test_form1!test_form1_sub1.SetFocus
Forms!test_form1!test_form1_sub1!textbox2.SetFocus
End Sub
しかし・・・
次の様に【.】で繋げると・・・
Private Sub コマンド0_Click()
DoCmd.OpenForm "test_form1"
Forms.test_form1.test_form1_sub1.SetFocus
Forms.test_form1.test_form1_sub1.textbox2.SetFocus
End Sub
エラーがでます・・・
謎です???
これを忘れていると、ここで躓いてしまい・・・
すぐに数時間をムダにしてしまいます。
サブフォームのコントロールを選択する場合の注意
あと、サブフォームのコントロールを選択する場合は、注意が必要です。
上の例でダイレクトに選択すると、エラーは出ませんが・・・
フォーカスできません。
Forms!test_form1!test_form1_sub1!textbox2.SetFocus
一度、サブフォームを選択してから、再度サブフォーム内のコントロールを選択する様に記述する必要があります。
Forms!test_form1!test_form1_sub1.SetFocus
Forms!test_form1!test_form1_sub1!textbox2.SetFocus
ちょっとしたことですが・・・
すぐに忘れて、躓くのでイライラします。
コメント