こんにちは、なかぜんです!
今日は「入力済みデータを編集できないようにする方法」について、初心者さんにもわかりやすく解説していきます。
「うっかり過去のデータを上書きしてしまった…」
そんな経験、ありませんか?
Accessでは、ちょっとした設定やVBAを使うことで、入力済みデータの編集を簡単に防ぐことができます。
この記事を読めば、重要なデータを誤って変更してしまうリスクを減らせるので、ぜひ覚えておきましょう!
なぜ入力済みデータの編集制限が必要なの?
業務でAccessを使っていると、入力ミスや編集ミスによるトラブルが意外と多いものです。特に、以下のような場面で編集制限が効果的です。
- 一度確定した伝票や注文データを誤って変更されたくないとき
- 承認済みの情報は触られたくないとき
- 履歴データとして保存しておきたいとき
ミスを防ぐだけでなく、システムの信頼性アップにもつながりますね。
編集制限をかける基本方法
方法①:フォーム側で制御する(プロパティ設定)
一番簡単なのは、フォームのコントロールにある「編集可否」を設定する方法です。
- フォームをデザインビューで開く
- 対象のテキストボックスを選択
- プロパティシートの「データ」タブで「編集ロック」をはいに設定
これだけで、そのフィールドは編集できなくなります。
ただし、すべてのレコードに対してロックがかかってしまうため、「入力済みだけロックしたい」という場合には、次の方法がおすすめです。
方法②:VBAで条件付きロックをかける
「新規入力中は編集できるけど、保存後はロックしたい」という場合は、VBAを使って制御します。
実際のコード例
Private Sub Form_Current()
' データが存在する場合のみロック
If Not IsNull(Me!ID) Then
Me!商品名.Locked = True
Me!数量.Locked = True
Me!単価.Locked = True
Else
Me!商品名.Locked = False
Me!数量.Locked = False
Me!単価.Locked = False
End If
End Sub
ポイント解説:
Form_Current
イベントに設定することで、レコードが切り替わるたびに判定されます。ID
のような主キーがNULLでない=「すでに保存されたデータ」とみなしてロックします。
これなら、新しいレコードでは自由に入力でき、保存されたレコードだけ編集できなくなります!
実際の画面イメージ
下の図のように、保存済みレコードはグレーアウトして編集できない状態にできます。

注意点・よくあるミス
- ロックする対象を間違えない:不要なフィールドまでロックしないよう注意!
- 必須フィールドの扱い:保存前にロックしてしまうと必須入力エラーになるので、条件分岐をしっかり。
- ユーザー別制御:管理者だけ編集できるようにしたい場合は、さらに工夫が必要です。
応用ポイント|中級者向け
ユーザー権限でロック制御する
ログインユーザーによって、編集可能・不可を切り替える方法もあります。
If CurrentUser() = "admin" Then
Me!商品名.Locked = False
Else
Me!商品名.Locked = True
End If
このようにすれば、管理者だけが修正できる仕組みも作れます。
レコード全体をロックする方法
特定条件でフォーム全体を編集不可にするなら、フォーム自体のAllowEdits
プロパティを使う手もあります。
If Not IsNull(Me!承認日) Then
Me.AllowEdits = False
End If
「承認されたらもう編集禁止!」という運用にもぴったりです。
まとめ|入力済みデータの編集制限は業務効率化に必須!
Accessでは、ちょっとした工夫で「誤ってデータを編集してしまうリスク」をぐっと減らすことができます。
- フォーム側のロック設定
- VBAで条件付きロック
- ユーザーや承認状況による制御
これらを組み合わせることで、より実用的なシステムが作れますよ!
ぜひ、あなたのAccessシステムにも取り入れてみてくださいね。
それでは、なかぜんでした!
