前回作成した重複エラーチェックのソースコード
について説明します。
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列にない場合、
重複チェックエラーとはならず。
登録可能です
とメッセージを表示し、処理終了します。
ではまた・・・
2007年12月24日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/74452765
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.seesaa.jp/tb/74452765
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック


