ACCESSーVBA・コントロールの選択方法!ドットかエクスクラメーションマークのどちらを使うか【! ro .】?

050-VBA

へっぽこヘタレシステム管理者の管理人です。

さて、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

ちょっとしたことですが・・・

すぐに忘れて、躓くのでイライラします。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました