質問するログイン新規登録

回答編集履歴

1

コード追記

2021/05/08 02:36

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -7,4 +7,28 @@
7
7
  DoCmd.RunCommand acCmdCopy 'コピー
8
8
  DoCmd.RunCommand acCmdPasteAppend '追加貼り付け
9
9
  End Sub
10
- ```
10
+ ```
11
+
12
+ 別案
13
+ ---
14
+ コメントで、サブフォームは更新、追加不可、フィールドによってNullにしたり加工したい場合があるとのことでしたので、その場合でも簡単に対応できる方法のサンプルです。
15
+ RecordsetCloneプロパティを使うと、更新の許可、追加の許可プロパティを「いいえ」にしてあっても更新、追加可能なので、それを利用して追加後、最終レコード(=追加したレコード)へ移動。
16
+ データの加工は必要に応じて加工してから代入すればいいでしょう。
17
+
18
+ ```vba
19
+ Private Sub ボタン_Click()
20
+ Dim sf As Form
21
+ Set sf = Me.subform.Form
22
+ With sf.RecordsetClone
23
+ .AddNew
24
+ !col1 = sf.col1
25
+ !col2 = sf.col2
26
+ !col3 = sf.col3
27
+ .Update
28
+ End With
29
+ Me.subform.SetFocus
30
+ DoCmd.GoToRecord acActiveDataObject, , acLast '最終レコードへ移動
31
+ End Sub
32
+ ```
33
+ RecorsetCloneプロパティについては、下記を参考にしてください。
34
+ [フォームの Recordset, RecorsetClone, RecordSet.Clone の違いとは? - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-108.html)