2007年12月15日

第17回エラーチェックの説明

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

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

'過去に行ったチェック処理結果を削除する。
'(B列を選択し、セル内の値を削除する)
Columns("B:B").Select
Selection.ClearContents
'B列のセル幅を18にセット
Columns("B:B").ColumnWidth = 18

'行カウンタをの宣言
Dim gyo_ctr As Integer

'1 行目から5行目まで処理を繰り返す。
For gyo_ctr = 1 To 5
'数字でなければ、B列に"数字を入力して下さい"を設定する。
If False = IsNumeric(Trim( _
Workbooks("book1.xls").Worksheets("sheet1").Cells(gyo_ctr, 1))) Then
Workbooks("book1.xls").Worksheets("sheet1").Cells(gyo_ctr, 2) = _
"数字を入力して下さい"
End If
Next

End Sub

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

最初に行う処理は、B列に入力されている値の削除と
B列の幅を18に設定する事です。

B列に入力されている値を削除することで、
過去に行ったエラーチェック処理のエラーメッセージを
削除できます。

B列の幅を18に設定する事で、エラーメッセージを
表示するのに十分な幅となります。

これらの処理はマクロの記録時に手作業を行えば、
自動生成されます。

次にエラーをチェックする処理ですが、
今回の処理は1行目から5行目まで繰り返します。

第7回で使用したDo Until〜Loopを
使うこともできますが、
より自然なFor〜nextを使います。

For gyo_ctr = 1 To 5
(中略)
Next
上記の文は、For文とNext文の間の
処理を5回繰り返しますが、
その際、gyo_ctr の値は
まず1を設定し、処理を繰り返すごとに
1加算されます。

For文の中にはIf文が1つあります。
セルの値をTrim関数で余分なスペースを削除し、
その値をIsNumeric関数に渡しています。
IsNumeric関数は渡された値が数字か判断し、
数字ならTrue、数字でないならFalseを返します。
この時点で、
IsNumeric(Trim( _
Workbooks("book1.xls").Worksheets("sheet1").Cells(gyo_ctr, 1)))
はTrueかFalseになり、その後、If文の判定が行われます。
IsNumeric関数がFalseを返していた場合のみ、
B列にエラーメッセージが設定されます。

ではまた・・・
posted by ぷろぐらまー at 07:17| Comment(1) | TrackBack(0) | 入門偏 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こういうブログを探していました これからも見ますのでよろしくお願いします 応援しますね 
Posted by 佐賀たろう at 2007年12月15日 16:09
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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

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