▶ Windows 11情報をお求めの方はこちらをクリック

AccessVBAでオートナンバーをリセット(初期化)する方法

2 min

簡易的なシステムを構築する際は、Accessのオートナンバー機能を使って、自動的に連番を採番できるため便利ですよね。

ところが、連番を1から振り直したい場合には、オートナンバーをリセット(初期化)する必要があります。

手動でのリセット(初期化)は簡単にできたのですが、AccessのVBAを使って自動的にリセット(初期化)をする方法で意外とハマりましたので、対処方法・解決策をメモします。

関数を作成しましたので、コピーしてご利用ください。

 

オートナンバーを手動でリセット(初期化)する方法

まずは、手動でリセット(初期化)する方法を簡単に紹介します。

この方法は、ググってみると多くの情報がヒットしましたので、ほとんどの方が知っているかもしれません。

テーブルのレコードを全て削除した後に、Accessを最適化

これだけですね。

まぁ、デバッグ時なんかはこれでもよいかもしれませんが、自動化システムとしては使い物になりませんよね。

ということで、いろいろと調べた結果、VBAでDAOを使ってオートナンバーを初期化できることが判明しましたので、実装方法をご紹介します。

 

オートナンバーを自動でリセット(初期化)する方法

VBAでオートナンバーをリセットする関数

「strTableNameにテーブル名」を「strFieldNameにカラム名(オートナンバー)」を渡して、関数を実行するだけでOKです。

' オートナンバーリセット
Private Sub AutoNumberReset(ByVal strTableName As String, ByVal strFieldName As String)

    Dim db As DAO.Database
    Dim strSQL As String
    
    Set db = CurrentDb
    strSQL = "ALTER TABLE " & strTableName & " ALTER COLUMN " & strFieldName & " COUNTER (1,1)"

    db.Execute strSQL
    
End Sub

 

処理の流れ

以下の流れで、コードを記述してください。

  1. テーブルのレコード削除
  2. AutoNumberReset関数実行
  3. テーブルにレコード追記

例えば、

①VBAで削除クエリを実行して、テーブルのレコードを全て削除した後、②AutoNumberReset関数を使って、オートナンバーをリセットし、③追加クエリを実行してテーブルにレコードを追加する(このときオートナンバーは1から採番される)

ような使い方が想定されますね。

 

まとめ

今回は、AccessのVBAを使って自動的にリセット(初期化)をする方法をご紹介しました。

前項で紹介した関数を使用すれば、簡単にオートナンバーをリセット(初期化)することが可能ですので、簡易的な自動化システムを構築するときは、とても便利です。

ぜひ使ってみてくださいね。

 

その他のAccess関連記事

AccessVBAでクエリ実行時の確認メッセージを完全に非表示にする方法

Accessの最適化をバッチファイルで行う方法

SEパパ

SEパパ

外資系IT企業SE職で2児の父ちゃん!職業柄かリサーチ&問題解決が好き。

幅広いジャンルで「お悩み解決」記事を執筆中。月間最高24万PV。雑誌掲載。

読者様に役立つ情報提供を心がけています。

カテゴリー:

1 件のコメント

  1. AutoNumberResetのソースを選択してコピーしようとすると
    「コピーできません」
    ではねられてしまいました。

    短いコーディングなので
    手打ちしました。
    ご紹介ありがとうございます。
    とてもお役に立ちました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA