Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
起動時の自動化について
投稿日時: 22/06/01 12:13:36
投稿者: ひろまさ

ご教示をお願いしたい事があります。
フォームにテキストボックスを作成して、ボタンをクリックすると
テーブルの内容を表示する運用を行っています。
下記は実際にフォームモジュールに記述している内容です。
 
Private Sub Tnki_Click()
 
Dim rs As DAO.Recordset
Dim i As Long
Dim lrec As Long
 
    Set rs = CurrentDb.OpenRecordset("TABLE")
    lrec = rs.RecordCount
    Me!TEXT_ITEM = Null
 
    For i = 1 To lrec
        Me!TEXT_ITEM = Me!TEXT_ITEM & rs(0) & vbCrLf
        rs.MoveNext
     Next
    Set rs = Nothing
  
End Sub
 
運用でAccessを起動時に自動的にテキストボックスに表示させる為に
マクロにプロシージャ名を入力し「AutoExec」の名前で作成を行いました。
しかし、起動時に「指定に指定した名前"Tnki_Click"がみつかりません」
と表示されます。
 
そこで、ネットで検索を行ったところ「Function プロシージャのみ」
との記載があり、Function Tnki() に変更を行いマクロのプロシージャ名も
変更しましたが、同様にエラーメッセージが表示されます。
いろいろと確認を行いましたが、どうしても実現ができないのでご質問を
させて頂きました。
よろしくお願い致します。

回答
投稿日時: 22/06/01 14:04:37
投稿者: Suzu

引用:
そこで、ネットで検索を行ったところ「Function プロシージャのみ」
との記載があり、Function Tnki() に変更を行いマクロのプロシージャ名も
変更しましたが、同様にエラーメッセージが表示されます。

 
直接の対策としては、プロシージャの実行では
 
1. 標準モジュール の Functionプロシージャを指定します。
 
2. でも、このコードは フォームモジュールで「Me」を指定していますから、そのままではダメです。
    Forms("フォーム名").Controls("コントロール名")
    Forms![フォーム名]![コントロール名]
   の様な参照の仕方に修正する必要がありあます。
 
3. 2までやっても、AutoExec の段階で その Forms("フォーム名") のフォームが開いていないと
  参照できませんので、エラーになります。
 
4. ですので、プロシージャを実行する前に、フォームを開いておく必要があります。
 
ここまで すれば実行できるでしょう。
----------------------------------------------------------------------------------
 
 
引用:
運用でAccessを起動時に自動的にテキストボックスに表示させる

 
であれば、AutoExec より、ファイルを開いた時に 開くフォームを指定した方が
VBAの変更等もせずに ラクでしょう。
 
Access データベースを開いたときに表示される既定のフォームを設定する
https://support.microsoft.com/ja-jp/office/access-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E9%96%8B%E3%81%84%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E6%97%A2%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-94961011-392f-4c3b-8dbc-e5d5adbff1df

投稿日時: 22/06/01 21:51:56
投稿者: ひろまさ

Suzuさんお返事ありがとうございます。
お返事が遅くなった事に対してお詫び申し上げます。
Suzuさんがおっしゃる通りに
 
1. Functionプロシージャの指定
2.Forms![フォーム名]![コントロール名]等の記載
3.起動時にフォームを開く設定
 
の以上の事を行いました。
しかし、Accessを起動させると以下のメッセージが表示されます。
 
式に指定した名前 'Tnki' が見つかりません。
現在のフォームまたはレポートのコンテキストを指定せずに、カレント
オブジェクトにないコントロールを指定した可能性があります。
他のフォームまたはレポートにあるコントロールを参照するには、
コントロール名の前にコレクション名を指定します。これには、通常、
'Forms' または 'Reports' と、フォームまたはレポートの名前を使用します。
たとえば、Forms![フォーム1]![コントロール1] となります。
 
自分なりにSuzuさんの情報を基にいろいろと確認を行いましたが、再度、
エラーの原因についてご教示をお願いできないでしょうか。
よろしくお願い致します。

投稿日時: 22/06/02 00:23:50
投稿者: ひろまさ

Suzuさんありがとうございました。
頂いたご回答を再度、見直した結果、無事解決に
至りました。
ご丁寧なご回答ありがとうございました。