【ACCESS VBA】コピペしかさせない 個人情報の誤登録を無くせ

記事
IT・テクノロジー

YoTubeでも解説しています。是非ご覧ください。



世間様では、右クリック禁止、コピペ禁止等のコードはよく見かけるのですが、
コピペしかさせないというコードは、なかなか見かけないですね。

コピペしかさせない 個人情報の誤登録を無くせ


こんにちは。伊川です。

また、新しく会社でシステムを作成することになりました。
個人情報の誤登録は、結構ありがちなミスです。
このご時世、情報の取り扱いには、気を付けなければなりません。
できるだけ正確にではありません。
絶対に正確にです。
郵便物が、他人に届くと、本当に困ってしまいます。
私の会社の場合は、WEB上に個人情報を、管理すシステムがあります。
その情報を、手入力されると、絶対に、入力ミスがあります。
確率的には、1,000件に1件あるか、無いかです。
しかし、目的は、撲滅です。
絶対にあってはならないミスなのです。

このブログはこんな人にお勧め

個人情報登録のミスをなくしたい人
ACCESSのVBAを勉強している人
VBAでキーボードの操作をしたい人

このブログを、読み終わるころには・・・・


今回のコードは、とてもカンタンです。
少しコードが長くなりますが、その辺は、Function等で短くすることができると思います。
Functionよりも、個人情報誤登録防止に重点を置きました。


VBAでキーボードを操作する


VBAを記載して、空を飛ぶこことはできません。
しかし、Excelという媒体を利用して、ある程度なんでもできるのが、すごいところです。
VBA初心者の頃は、キーボードを、VBAで操作できるなんで、思ってもいませんでした。
しかし、勉強していくと、できるようになるもんですね。
ではコードを解説します。


VBAでキーボードを操作する 作業手順 その1 コピペしかさせないコード

1.jpg

まず、コピペしかさせたくないテキストボックスを選択して、キークリック時に、イベントが発生するようにします。
記載するのは、下記のコードです。


2.jpg

VBAで、キーボードを、操作する場合は、色々な方法があるのですが、今回は、KeyCodeを利用します。
これだけで完成です。
この、コードを仕込むと、貼り付け、つまり、Ctrl+V以外の操作は、受け付けません。
めでたし、めでたし

VBAでキーボードを操作する 作業手順 その2 不評が続出


もし、間違えて、貼り付けたらそうすんだ!
そのような、不平がたくさん来ました。
いや、ごもっとも!
システムを作成するときは、エンドユーザーのことを考えましょう。
しかし、貼り付けるデータを間違える時点で、緊張感がないですけどね。

VBAでキーボードを操作する 作業手順 その3 コードを修正する


3.jpg

KeyCode=8は、BackSpaceキーを意味します。
KeyCode=13は、Enterキーを意味します。
これで、完璧です。
つまり、Ctrl+V、BackSpace、Enter以外の操作はできません。

VBAでキーボードを操作する 作業手順 その4 個人情報を貼り付ける


今回は、昭和46年1月26日という、データから、0126という値を、取り出します。
テキスト0の更新後処理に下記のコードを仕込みます。

4.jpg



無題.jpg

WEB上で、コピーをすると、余計なスペース、改行コードが、入ります。
したがって、Trim関数、Peplace関数、Nz関数を利用して、値を整形します。

5.jpg

Enterキーを、押します。

6.jpg

0126を、抽出できました。
以前は、4桁の文字列でなければ、登録できないようにしていました。
しかし、結果的には、4桁以外は、登録させないといっても、欲しいのは、正確な値なので、桁数で制限をするのは、無駄でした。


余談 Nullの使い方が不正ですの対処方法

7.jpg

上記のコードに関しては、Nz関数があるかないかです。
なぜ、このエラーが発生するかというと、String型の初期値は、””なのです。
Nullは、カンタンといと、どのデータ型にも属さないと言えば、カンタンかもしれません。厳密には、違いますけどね。
だから、テキスト0が、Nullになった場合、テキスト0は、string型なので、Nullの使い方が不正です。となります。
このエラーを回避するために、Nz関数を利用して、Nullを””に変更します。
また、変数を利用しているときは、String型ではなく、Variat型へ、変更することで、回避できます。
これで本当に完璧になります。
iif関数を利用して、条件判定をするよりも、Nz関数を利用したほうが、カンタンですね。

ここがポイント


今回は、コピペ以外させないというコードを紹介しました。
別に意地悪をしているわけではありません。
正確性を保持するためのものです。
なんでも、入力できるのは、処理スピードが、向上します。
しかし、データベースは、なんと言っても、正確性が要求されます。
処理スピードが、向上しなくても、開発側は、正確性の重点を置くべきです。

まとめ


今回は、データベースの正確性を保つものです。
入力で制限を付けることで、入力側にも、緊張感が生まれます。
正確なデータベースを、保ちましょう。
今回も最後まで読んでいただきありがとうございました。



サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す