Microsoft Access 掲示板

サブフォームのVBAを呼び出したい

10 コメント
views
4 フォロー

サブフォームの「Form_AfterUpdate()」をメインフォームから呼びだしたいです。
コードの中に記載されている内容を、メインフォームの更新ボタンで実現可能にしたいのですが可能でしょうか。

トマト
作成: 2020/12/04 (金) 20:48:44
最終更新: 2020/12/04 (金) 20:49:03
通報 ...
1

サブフォームのモジュールの

Private Sub Form_AfterUpdate()

PrivatePublic に修正

Public Sub Form_AfterUpdate()

メインフォームのコマンドボタンのクリック時を下記のように記述

Private Sub 更新ボタン_Click()
    Me.サブフォームコントロール名.Form.Form_AfterUpdate
End Sub
2
トマト 2020/12/05 (土) 09:24:09 0029a@1c915

ありがとうございます。大変参考になりました。
しかし、今回のコードのせいかエラーが出ます。
「実行時エラー2471 クエリパラメーターとして指定した式でエラー'年月日'が発生しました」
エラーを発生させない方法はありますでしょうか。

サブフォーム内のコード

Public Sub Form_AfterUpdate()

    Me.Requery

    Dim maxDate
    maxDate = DMax("年月日", "T管理", "管理ID=" & Me!txt管理ID)    
    
    If Me.Parent!年月日new = maxDate Then
    Else
       Me.Parent!new = maxDate
    End If
End Sub
3

そのエラーがでるコードはどこですか。

4
トマト 2020/12/05 (土) 22:26:12 0029a@1c915

ご確認ありがとうございます。
エラーが出るコードはここになります。

Private Sub 更新ボタン_Click()
    Me.Fサブ管理.Form.Form_AfterUpdate '←←ここです。
End Sub
5

「実行時エラー2471 クエリパラメーターとして指定した式でエラー'年月日'が発生しました」というエラーが出たときに、デバッグボタンをクリックするとその行が反転表示されるのですか。

念のために確認ですが、上記の「Fサブ管理」というのはサブフォームコントロール名ですか。
サブフォーム名サブフォームコントロール名は別物です。

サブフォームとサブフォームコントロールの違いとは? - hatena chips

6
トマト 2020/12/07 (月) 08:53:30 修正 0029a@1c915

ありがとうございます。再確認しました。サブフォームコントロール名で間違いありません。サブコントロール名とサブフォームコントロール名が同じものに設定されていたので、試しにさぼフォームコントロール名を変更して試してみましたが、エラー発生状況は同じでした。
おっしゃるとおり、デバックボタンを押すと該当の行が反転される状況です。

7

エラーメッセージから推測すると、サブフォームのレコードソースのクエリに問題があるように思えます。

サブフォームのレコードソースをクエリではなくテーブルにしたらどうなりますか。
それでエラーが出ないなら、クエリに問題があるということになります。
その場合は、現状のクエリのSQL文を提示してください。

8
トマト 2020/12/07 (月) 13:27:15 0029a@1c915

テーブルにしてみたところ、リンクが切れている部分についてのエラーは出ましたが、それ以外のエラーは出ませんでした。SQL文ですが、そのまま掲載するのもちょっとあれなので、お送りさせていただきますね。ありがとうございます。

9

SQL文を拝見しましたが、特に問題はなさそうです。
こうなると、デバッグ作業をすることになりますが、実ファイルのないこちらでは無理です。
下記のリンク先を参考にステップ実行によるデバッグ作業を行ってください。

最も基本的なステップ実行 - Excel VBA

10
トマト 2020/12/08 (火) 16:18:35 0029a@1c915 >> 9

SQLをご確認いただき、ありがとうございました。大変お手数をおかけいたしました。
デバッグはまだ行っていないのですが、とりあえずは、サブフォームのヘッダーに更新ボタンを置いて対応することにしました。