FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


入力チェック(バリデーション)をしたい!!

フォームから登録を行うようになると、間違ったデータや空白(Null)では登録を行わないように
チェックする機能が必要になってきます。

そう!
「入力チェック」とか「バリデーション」とか言われているやつです!!(☆_☆)ギラッ!!

例えば空白であったら駄目だとか、数字が半角出なければ駄目だ・・・とか・・・そんなやつですよ!!

自分だけで使うシステムであれば特に気にする必要はないものなのかもしれませんが、
他の人に使わせる・・・とか考えた場合、非常に大切なものになってくると思われる今日この頃なわけです。

1つ2つ程度のチェックならさほど面倒ではないのですが、この数が増えると非常に長ったらしい
コードになってしまうのは明白!!
(いや・・・自分の書くコードも結局長ったらしいんですけどね・・・(;^_^A アセアセ)

\(・_\)ソノハナシハ (/_・)/コッチニオイトイテ

・・・そんなこんなで、今回の無駄コードは

とりあえず空白は許しちゃ駄目だよ

コードです。(☆_☆)ギラッ!!

タイトルでは、入力チェックということで、かなり幅の広い項目になっているかもしれませんが、
今回は空白の処理をベースに考えて行きたいと思います。



え~っと、一応今回は「空白(Nullも含む)を許可しない」ということを前提に考えています。
また、テキストボックスのチェックを中心に考えています。
ご希望があれば、色々なものに対応したものを考えないでもないですが、そんな希望は
発生しないという見込みの元に記述してきましょう。

一応サンプルとして、テキストボックス名とエラー時に表示させるメッセージを下記の表の記述しておきます。
テキストボックス名エラーメッセージ
Name名前を入力してください。
Address住所を入力してください。
Tel電話番号を入力してください。
Age年齢を入力してください。
今回は4つのテキストボックスのチェック・・・ということになりますね。

Dim chkCtl(3) As String '(コントロール名とエラーメッセージの指定変数)
Dim varChk As Variant 'chkCtl()内を「/」を区切りとして分解したものを格納する変数
Dim i As Byte 'ループ用変数

chkCtl(0) = "Name/名前"
chkCtl(1) = "Address/住所"
chkCtl(2) = "Tel/電話番号"
chkCtl(3) = "Age/年齢"
'chkCtl(x) = "コントロール名/エラーメッセージ表示させるコントロール名"

For i = 0 To 3
varChk = Split(chkCtl(i), "/")

If trim(Nz(Me(varChk(0)), "")) = "" Then
MsgBox varChk(1) & "を入力してください。"
Me(varChk(0)).SetFocus
Exit Sub
End If
Next

'入力チェック完了後の処理を記述~
こんな感じでしょうか・・・。

chkCtl(x)の変数内に、チェックするコントロール名と、エラーメッセージで表示させるときの
コントロール名を指定し、後はループ処理によって1つずつチェックをさせている・・・
という処理になっています。

仮に登録ボタンなんかがあったとしたら、そのボタンのクリック時イベント等に記述すれば
オッケリングではないでしょうか・・・。

今回はチェックする項目が4つなので、コントロール名とエラーメッセージの指定変数のchkCtlと
ループ回数が「3」になっていますが、チェックするコントロールの数に応じて、
(チェックするコントロールの数)-1の値を指定してあげればよい形になります。

その際には、5~8行目で指定しているコントロール名とエラーメッセージも増減させることも
忘れないでくださいね。

え?別にNz関数使わなくてもいいんじゃないの・・・? 
Isnull関数じゃ駄目なの・・・?? ですって・・・?

( ̄ ̄ ̄ω ̄ ̄ ̄ ;;)うにょ~ん
そういえば以前・・・そんなご指摘を受けた気もしますね・・・
(参照記事 入力された内容をチェックしたい(2) (空白とNull編)のhatenaさんからのコメント)

でも一応、今回は年齢という数値のチェックも入れてますし・・・

え?数字の半角と全角のチェックはどうするのか?

(-ーゞフッ
そんなことは知りませんよ・・・IMEの入力モードを「使用不可」にでもしておけば、全角は入力できませんよ・・・。

え?数値かどうかの判断ですか?

どっか適当にIsnumeric関数を利用してチェックしてくださいよ・・・。(T_T)ホロホロ

もうわかんないよ・・・orz・・・とか逃げたいですけれど・・・

chkCtl(x) で指定した文字列が、valChkに「/」によって区切られたデータに分割されて使われている・・・
ということを利用すると、色々な入力チェック方法も考えることができそうな気がします。

とりあえずですね・・・参考程度にもならない参考程度のコードということで・・・
今回の無駄コードということになりますな。 ヾ(  ̄▽)ゞオホホホホホ…

ではでは・・・(・・)/ シュタ

C= C= C= C= C= C= ┌(;・_・)┘トコトコ


↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。