御世話になります。
以前紹介していただいた
帳票フォームで新規行を一番上に表示する
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
とかき変えたのですが、間違っていますでしょうか?
標準モジュールには記述ぜすに、
帳票フォームで新規行を一番上に表示する - hatena chips
で説明されいるようにフォームを設計して、そのフォームのモジュールに記述してください。
上記の方法ではだめですか。
同じようなフォームを多数作るので、標準モジュールに記述して、複数のフォームから共通で使えるようにしたいということでしょうか。
ありがとうございます。1つはできたのでそのまま使わせていただいています。別のフォームにつくろうと思いまして。ネットで調べるとマクロからVBAを動かすには
プロシージャーの実行 で Function名 とあったので書いてみたのですが・・・。
添付図の ① の値を ② の OKボタン を押すことで 右のフォームを開き ③ の部分に 書き込もうとしています。
ちなみに C17 は レコードソース C_11_入庫登録クエリ で テーブル C_1_入出庫台帳を元にフィールド 入出庫日 品名ID 入庫数量 出庫数量 単位 入庫備考 従業員コード を選択したモノです。
別のフォームの、フォームヘッダーに、テキストボックスとコマンドボタンを、リンク先の説明通りに配置して、
コマンドボタンのクリック時のイベントプロシージャに、リンク先のコードをコピーして貼り付けるだけです。
わざわざマクロから呼び出す必要性はないです。
同じコードを複数個所に記述するのは無駄ですので、それを標準モジュールに記述して共通に使えるようにできますが、
まずは、クリック時のイベントプロシージャに記述する方法を理解してからです。