GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

【Q&A】空欄やNULL等がある場合には

2010-11-05 11:19:24 | マクロ作成のコツ

A列とB列に入っている日付データを比較して、最近の方を
C列に転記するマクロです。(空欄やNULL等もある場合)


基本は、講座内で勉強したデータ取得の方法(テキストのP31~)
での基本構文

a = ActiveCell.Value

を用いて取得した日付を、これも講座内のエラー対処の中で
ちょっと触れました

On Error Resume Next

という構文(テキストのP62)と、Err.Number というものを
組み合わせて使うことで、空欄やNULL等にも対応することが
できます。

具体的には、

まず、日付データ専用の箱(変数)を2つ用意しておいて

Dim a As Date
Dim b As Date

次に、エアートラップを掛けます。

On Error Resume Next

あとは、比較するまず一方のセルからデータを取得して

Range("A1").Select '←比較する日付データのセルを指定
a = ActiveCell.Value

その直後に

If Err.Number <> 0 Then a = "1988/12" '←もし、空欄やNULL等のエラー値だったら最小値を入れておく

というIF文の処理を行います。
そして、もう一方のセルでも同じことをやって

Range("B1").Select
b = ActiveCell.Value
If Err.Number <> 0 Then b = "1988/12"

最後に、取得したaとbをLesson7のIF文の基本に基づいて大小を
比較すればOKですね。

If a > b Then
'Aを表示する処理
Else
'Bを表示する処理
End If


で、そこまで出来たら最後にこれに行数分処理するためのループ
の処理(Lesson6)を、テキストP69の16番の構文を使って
回してあげれば完成です。
ただし、ループの中の処理では都度行数が変化していきますので

Range("A1").Select

といった部分の行数を示す数字の部分に関しては、ループ変数の
i に置き換えて(可変にして)

Range("A" & i).Select

といった具合に直す必要があります。(B列とC列も同じです。)



コメント    この記事についてブログを書く
« スーパー無駄なスーパー堤防... | トップ | 一致する数字がヒットしない原因 »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

マクロ作成のコツ」カテゴリの最新記事