掲載参考 EXCEL ファイルダウンロード
ifthen.xlsm
intRow が 10 になって、最下行が検知され
た事が分かる。
intRow が 5 となって、空白行の上を検知
されたことが分かる。
●プログラムは、B列がAならD列に記入し
B列がBならE列に記入するもので、
B列がCなら終了するプログラムであった。
だから、8行目がCだからFor を終了してし
まった。
● xlDown, xlToleft, xlToRight, xlUp
これを見ても分かるように、右端も左端も調べることができる。
下端を調べる方法も、xlDown と xlUp の2種類があり、xlUp は、下方の決めたセルから上に調べて、データ行の
最下端を調べるもので、xlDown は上から下に最下行を調べるので、データ行に空白がないのが前提になる。
だから、空白行が含まれる可能性のある場合は、xlUp を使用しないと、空白行を最下行と認識される。
●Sheet1のB列に、このようなデータがある。
Range("C2:E" & intRow). CleraContents
普通は、Range("C2:E10") の様に範囲を定義するが、右下が可変の場合は、
変数で定義することができる。
"C2:E" 固定値をクオーテーションマーク ( " ) で囲んで、スペースを入れ、( & )
アンドを入れ、変数を入れて、カッコで閉じる。これが変数を使用するときの
書式である。
ClearContents は選択範囲の文字の消去である。コマンドの間は( . ) ドットである。
For i=2 To intRow
Next
これは、For から Next の間を繰り返す、i が 2 から intRow になるまで。
For から Next までを実行して、Next から For に戻ると i は 1 繰り上がる。
だから、2行目から最下行まで順に実行する。
If Range("B" & i)="A" Then ' B列の i 行目の文字がAなら実行する。
T=Range("B" & i) ' B列の i 行目の文字を変数 T に代入する。
Range("D" & i).Value=T ' D列の i 行目に T の値を書く。 Valueは書くということ。
End If
If A=1 は、A が 1 なら Then の次のコードを実行する。
If A>1 は、A が 1 より大きかったら Then の次のコードを実行する。
If A<1 は、A が 1 より小さかったら Then の次のコードを実行する。
If A>=1 は、A が 1 か、 1 より大きかったら Then の次のコードを実行する。
If A<=1 は、A が 1 か、 1 より小さかったら Then の次のコードを実行する。
If A>1 And A<5 Then は、Aが 1 より大きく、5 より小さかったらThenの次の
コードを実行する。又、Or も使用することができる。
(If Then )や( End If )はセット書式で省略はできない。
"A" の様に文字列は、クオーテーションマーク ( " ) で囲む、変数は囲まない。
If Range("B" & i)="C" Then Exit For
B列の i 行目がCなら、For から Next までの、コードの実行を終了する。
だから、For Next から抜け出して、それ以後のコードがあれば、それを実行する。
2.尚、プログラムを書くときには、ある程度の文字
を入力すると、候補が表示される。
この場合も、End( と入力した時点で候補が4つ
表示される。それを選択して[Tab]キーを押すと
入力される。
1. [IF検知1]プログラムは、このデータの中から
A,B,Cを判別して処理を行うものである。
B列のデータが何列あるのか分からないので、
それを調べる必要がある。
intRow=Range("B2").End(xlDowu).Row
intRowは、自分で決めた任意の変数名である。
何でもよい。
セルB2から下へ数えてEnd終端はどこか、と
言う意味になる。
最後のRowは、行番号を知りたい、と言うこと
なる。
B列のデータ書き込み最下行は、10だから
intRowに10が入る。
しn
基本的なマクロの習得
FOR _ NEXT と If _ Then の使い方
実際に使っているシステムの内容で解説
EXCEL VBA 講座