ボタンをクリックするだけで以前のレコードから特定のデータをコピーできるVBA関数を作成する方法を学びます。 同じものを繰り返し入力する必要はありません。
XNUMXつのフィールドを除いて、以前のレコードとまったく同じ値のセットを持つ新しいレコードをAccessに入力する必要があるという経験をしたことがありますか? 面倒かもしれませんね。 このチュートリアルでは、ボタンをクリックするだけで前のレコードの特定の値をコピーできる関数を作成する方法を説明します。これにより、再入力の時間を節約できます。 以下の手順に従ってください。
ダウンロード
あなたがしたい場合tarできるだけ早く機能を使用するには、次のことができます。
今すぐVBAコードを含むサンプルデータベースをダウンロードする
それ以外の場合、DIYをしたい場合は、以下の内容を読むことができます。
Accessに「レコードコピーの作成」機能を追加する手順
- フォームをデザインビューで開きます。

- コマンドボタンを追加します。 コマンドボタンウィザードをスキップします。
- 追加する クリック時 ボタンへのイベント。
- デザインビューで、ボタンを選択します。
- プロパティシートを開きます(ALT + Enter)
- [イベント]タブに移動>クリック時>…
- 時 Builderを選択します メニューがポップアップし、コードビルダーを選択します。
- [OK]をクリックします。
- これにより、VBAエディターが開きます。
-
- 次のコードをコピーして、ニーズに合わせて変更します。 コメントをガイドとして使用してください。
Private Sub Command24_Click() Dim currentID As Long 'TO DO: change all instances of 'BookID' with the actual name of your table's ID or primary key If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If currentID = BookID DoCmd.GoToRecord record:=acNewRec 'TO DO: set the fields to be copied (those that most likely will have the same values) 'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID) Author = DLookup("Author", "Books", "BookID=" & currentID) Country = DLookup("Country", "Books", "BookID=" & currentID) Language = DLookup("Language", "Books", "BookID=" & currentID) Genre = DLookup("Genre", "Books", "BookID=" & currentID) Publisher = DLookup("Publisher", "Books", "BookID=" & currentID) Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user End Sub - 次に、コードが機能するかどうかをテストします。
コードの説明
上記のコードは、書店のデータベースに使用されました。 書籍シリーズのため、XNUMXつのフィールド(タイトル)を除いて、すべての書籍の詳細(著者、国、言語など)が同じである場合があります。 したがって、コードの必要性。
以下のリストは、プログラムフローを示しています。
- ユーザーがコピーするレコードを選択したかどうかを確認します。 ユーザーが[新しいレコードの追加]ボタンをクリックした直後にボタンをクリックすると、エラーメッセージがポップアップ表示され、IDがnullになります。
If IsNull(BookID) Then MsgBox prompt:="Please select the record to copy first.", buttons:=vbExclamation Exit Sub End If
- 現在のレコードのIDまたは主キーを取得し、それを値として割り当てます。 現在のID これは、コピーされる値の基礎として使用されます。
currentID = BookID
- 新しいレコードを追加します。
DoCmd.GoToRecord record:=acNewRec
- に基づいて特定のフィールドに値を設定します 現在のID これは、選択したレコードからデータがコピーされる場所です。
'FORMAT: fieldName = Dlookup("fieldname", "tableName", "primaryKeyField=" & currentID)
Author = DLookup("Author", "Books", "BookID=" & currentID)
Country = DLookup("Country", "Books", "BookID=" & currentID)
Language = DLookup("Language", "Books", "BookID=" & currentID)
Genre = DLookup("Genre", "Books", "BookID=" & currentID)
Publisher = DLookup("Publisher", "Books", "BookID=" & currentID)
- mであるフィールドにフォーカスを設定しますost ユーザーが最初に編集する可能性があります。 これにより、ユーザーがまだ更新する必要のあるフィールドを手動で選択する必要がなくなるため、ユーザーエクスペリエンスが向上します。
Title.SetFocus ‘TO DO: change 'Title' with name of field that is going to be edited by the user
破損したデータベースを修復する
不幸な理由で、データベースを開くことができない日を目覚めさせた場合は、実行するサードパーティのツールを試すことができます アクセス修復。 それは不思議に働きます。
著者紹介:
Jayme Stackは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQLの回復 と優れた回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com
