2007年12月24日

第19回重複エラーチェックの説明

前回作成した重複エラーチェックのソースコード
について説明します。

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2007/12/23 ユーザー名 :
'

'重複チェックする文字列を格納する
Dim chk_word As String
chk_word = Trim(Workbooks("book1.xls").Worksheets("sheet1").Cells(1, 1))

'1行1列が未入力またはブランクの場合、エラーメッセージを出力、処理終了
If "" = chk_word Then
MsgBox "1行1列が未入力です", vbOKOnly, "エラーメッセージ"
Exit Sub
End If

'F列検索用ループカウンタ
Dim ctr As Long
ctr = 1

'F列を1行目からデータが無くなるまで検索
Do Until "" = Trim(Workbooks("book1.xls").Worksheets("sheet1").Cells(ctr, 6))
'1行1列と同じデータがF列にあったらエラーメッセージを出力、処理終了
If chk_word = Trim(Workbooks("book1.xls").Worksheets("sheet1").Cells(ctr, 6)) Then
MsgBox "既に登録済みです", vbOKOnly, "エラーメッセージ"
Exit Sub
End If
ctr = ctr + 1
Loop

MsgBox "登録可能です", vbOKOnly, "インフォメーション"

End Sub

上記が重複エラーチェックのソースコードです。

最初に行う処理は、String型の変数chk_wordの宣言と、
chk_wordに1行1列の値を格納する事です。

String型の変数chk_wordを可変長で宣言しているので
約20億個までの文字を格納できます。

変数のサイズは、格納した文字列の長さにより変化します。
文字数 x 2byte + 10byte

String型には固定長で宣言する事もできます。

Dim chk_word As String * 30
上記の様に宣言すると、変数のサイズは、
30 x 2byte = 60byteとなり、
可変長の70バイトより小さくて済みますが、
30文字未満の文字列を
格納した場合でも文字列の後ろをブランクで
埋めて30文字にして格納しますし、
30文字を超える文字列を格納した場合、
文字列の左から30文字しか格納されません。

処理内容に応じて固定長にするか可変長にするか
判断して下さい。
尚、固定長の場合、65526文字までが限界です。

次に1行1列の内容が未入力またはブランクでないか
チェックします。

1行1列に文字列が無いとこのマクロを実行する意味が
無いので、ここでチェックしています。

1行1列に文字列が入力されていた場合、同じ文字列がF列に
存在するかチェックします。

具体的には、F列の1行目から2行目、3行目と
F列が空になるまで処理を繰り返し、
1行1列と同じ文字列があれば、既に存在していると
判断し、エラーメッセージ出力、処理終了となります。

F列が空になるまで処理を繰り返しても
1行1列と同じ文字列がF列にない場合、
重複チェックエラーとはならず。
登録可能です
とメッセージを表示し、処理終了します。

ではまた・・・
posted by ぷろぐらまー at 19:44| Comment(0) | TrackBack(0) | 入門偏 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/74452765
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Google
 
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。