PR

Accessで自動採番+接頭辞を使って管理番号を作成する方法

Access
スポンサーリンク

こんにちは、Accessブロガーのなかぜんです。

業務で管理番号をつける場面、けっこう多いですよね。例えば「ABC-0001」「REQ-2025-001」など、決まったルールの番号で情報を管理したいとき。

でも、Accessでは「オートナンバー」だけじゃ、思った形にならない…。そんなお悩み、ありませんか?

今回は、接頭辞つきの管理番号をAccessで自動生成する方法を、フォーム+VBAでやさしく解説します!

スポンサーリンク

やりたいこと:接頭辞+連番で番号を作る

たとえば、以下のような番号を自動で作成したいとします。

  • REQ-0001
  • REQ-0002
  • REQ-0003

この番号を、フォームで新規登録するときに自動で生成して、テーブルに保存する流れです。

必要なテーブル構成

まずは、テーブルに以下のようなフィールドを用意します。

  • ID:主キー(オートナンバー)
  • 管理番号:テキスト型(例:REQ-0001)
  • その他:必要な項目(氏名や日付など)

※「ID」は内部管理用に残しておくと便利です。

フォーム+VBAで管理番号を自動生成

ここからが本題。フォームで新規レコードを追加したときに、VBAで管理番号を生成します。

① フォームの「BeforeInsert」イベントを使う

フォームのプロパティシートから、イベントタブ → BeforeInsert を選び、VBAコードを以下のように記述します。

Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim 接頭辞 As String
    Dim 次番号 As Long
    Dim 最大番号 As Variant
    Dim 管理番号 As String

    接頭辞 = "REQ-"

    ' 最大番号の取得(管理番号の後半だけを取り出す)
    最大番号 = DMax("Val(Mid([管理番号],5))", "T_管理データ")

    If IsNull(最大番号) Then
        次番号 = 1
    Else
        次番号 = 最大番号 + 1
    End If

    管理番号 = 接頭辞 & Format(次番号, "0000")

    Me!管理番号 = 管理番号
End Sub

② 解説

  • DMax関数で、既存データの最大番号を取得します。
  • Mid関数で「REQ-0001」→「0001」の部分を抜き出して数値化します。
  • Format関数で、桁数をそろえて「0001」形式にします。

注意点・よくあるミス

  • 管理番号フィールドはテキスト型にしておく
  • 接頭辞の桁数に合わせてMid()の位置を調整する(例:4文字接頭辞ならMid(...,5)
  • 既存データに不正な文字列(例:「REQ-abc」)があるとVal()が正しく動作しない

→ 安定運用のためには、「管理番号」をユーザーに直接入力させないようにしましょう。

応用ポイント:年月付き番号や部門ごとの管理番号

中級者向けに、ちょっと発展的なアイデアもご紹介します。

① 年月付き番号にする

接頭辞 = "REQ-" & Format(Date, "yyyymm") & "-"

例:REQ-202505-0001

② 部門コードごとに分ける

たとえば「営業部=SLS」「開発部=DEV」など、フォームで部門コードを選び、それを接頭辞に含めます。

接頭辞 = Me!部門コード & "-"

まとめ:自動採番+接頭辞は業務に超便利!

今回は、Accessで接頭辞付きの管理番号を自動生成する方法をご紹介しました。

  • フォームのBeforeInsertイベントで自動採番!
  • 文字列操作(MidFormat)を使いこなそう
  • 安定運用には入力制御も大事!

このテクニックは、請求書番号、申請番号、製造指示番号など、さまざまな業務で活用できます。

「自分でもできそう!」と思ってもらえたらうれしいです😊

それでは、またお会いしましょう〜!

bookfan 1号店 楽天市場店
¥2,992 (2025/05/04 17:53時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
\商品券4%還元!/
Yahooショッピング