Microsoft Access 掲示板

VBAをマクロから実行したい

3 コメント
views
4 フォロー

御世話になります。
以前紹介していただいた 

帳票フォームで新規行を一番上に表示する 
Private Sub cmdAddNew_Click()
Dim fld As DAO.Field

    With Me.RecordsetClone
        .AddNew
        For Each fld In .Fields
            fld = Me("n" & fld.Name)
            Me("n" & fld.Name) = Null
        Next
        .Update
    End With
    Me.Requery
End Sub
をマクロから動かしたいのですが
標準モジュールに Function として記述することはわかったのですが
With Me.RecordsetClone のところで止まってしまいます。

フォーム名は C17_入庫台帳_転記 なので

Public Function cmdAddNew_Click()
Dim fld As DAO.Field

    With Form[C17_入庫台帳_転記].RecordsetClone
        .AddNew
        For Each fld In .Fields
            fld = FormC17_入庫台帳_転記
            FormC17_入庫台帳_転記 = Null
        Next
        .Update
    End With
    Form[C17_入庫台帳_転記].Requery
End Function
とかき変えたのですが、間違っていますでしょうか?

igachan
作成: 2019/05/06 (月) 08:39:37
通報 ...
1

標準モジュールに Function として記述することはわかったのですが

標準モジュールには記述ぜすに、
帳票フォームで新規行を一番上に表示する - hatena chips
で説明されいるようにフォームを設計して、そのフォームのモジュールに記述してください。

上記の方法ではだめですか。

同じようなフォームを多数作るので、標準モジュールに記述して、複数のフォームから共通で使えるようにしたいということでしょうか。

2
igaguri 2019/05/06 (月) 11:25:04 32a1e@d14a6

ありがとうございます。1つはできたのでそのまま使わせていただいています。別のフォームにつくろうと思いまして。ネットで調べるとマクロからVBAを動かすには
 プロシージャーの実行 で Function名 とあったので書いてみたのですが・・・。
添付図の ① の値を ② の OKボタン を押すことで 右のフォームを開き ③ の部分に 書き込もうとしています。

ちなみに C17 は レコードソース C_11_入庫登録クエリ で テーブル C_1_入出庫台帳を元にフィールド 入出庫日 品名ID 入庫数量 出庫数量 単位 入庫備考 従業員コード を選択したモノです。

3

別のフォームの、フォームヘッダーに、テキストボックスとコマンドボタンを、リンク先の説明通りに配置して、
コマンドボタンのクリック時のイベントプロシージャに、リンク先のコードをコピーして貼り付けるだけです。

わざわざマクロから呼び出す必要性はないです。

同じコードを複数個所に記述するのは無駄ですので、それを標準モジュールに記述して共通に使えるようにできますが、
まずは、クリック時のイベントプロシージャに記述する方法を理解してからです。