ちょっとプログラムちっく
今回は、もうちくっとプログラムちっくなVBAを紹介します。
かといって、一気にハードルを上げるつもりはごぜーません。
VBAを始めるために、まずは前回の「マクロの記録 」をしてください。
これが一番始める前の下準備で簡単ですからね~~
ところで、またまた脱線しますが、マクロの記録をする時に表示される画面に
「マクロの保存先」ってあるの気が付きました?
「作業中のブック」「新しいブック」「個人用マクロ ブック」ってあります。
「作業中のブック」・・・これは今作業しているExcelファイルにVBAを記録させます。
「新しいブック」・・・これは新しくExcelファイルを作成して、そこにVBAを記録させます。
「個人用マクロ ブック」・・・これはExcelそのものに記録させるっていうイメージです。
なので、色々なExcelファイルに対して、行いたいVBAは「個人用マクロ ブック」に保存してください。
今回のようなテストVBAは「作業中のブック」にしておいてください。
さて、話に戻りましょう。
今回は、プログラムちっくなのというテーマで
「A列に入力されている複数行(行数未確定)の数字の奇数のみの合計を算出するPG」
わかりにくいなぁ・・・。A1が1、A2が2、A3が3の場合は4が求められるって意味です。
Sub Macro1()
Dim intRow As Integer 'No1
Dim intSum As Integer 'No1
intRow = 1 'No2
intSum = 0 'No2
While Cells(intRow, 1) <> "" 'No3
If (Cells(intRow, 1) Mod 2) = 1 Then 'No4
intSum = intSum + Cells(intRow, 1) 'No5
End If
intRow = intRow + 1 'No6
Wend
Cells(1, 2) = intSum 'No7
End Sub
No1
変数の定義
変数っていうのは、モノを入れる箱の事です。
Dim 変数名 As データ型
これが定義方法です。
今回は「intRow」行番号計算用と「intSum」合計値計算用の変数をInteger型で定義しました。
データ型は色々あります。
Integer -32,768~32,767の範囲の整数を格納できます。
Currency 15桁の整数部と4桁の小数部を格納できます。
Date 日付を格納できます。
String 文字を格納できます。
・・・と他にも色々ありますが、今はこれくらいで。。。
No2
変数の初期化
変数を定義したら、必ず初期化してください。
マナーみたいなもんです。
intRowは1行目から処理したいから、1をセット
intSumは合計値を処理したいから、0をセット
No3
条件が当てはまるまで繰り返す
今回のVBAのミソの1つです。
While ○○○
Wend
これは条件の○○○が成立する場合は、この間をクルクル回るってことです。
Cells(行番号,列番号)とすることで、セルの値を取得できます。
行番号に変数を用いることで、参照するセルを移動させる事ができます。
(Cells(intRow,1) <> "")の、<>はノットイコールを指します。
よって、今回のケースの場合は、参照するセルが空白でない場合は繰り返すってなります。
No4
条件が当てはまる場合のみ処理をする
こちらもミソの1つです。
If ○○○ Then
△△△
Else
□□□
End If
○○○の条件が成立する場合は、△△△の処理をします。
※Elseを記述すると、不成立の場合の処理もできます。今回は未使用。
(○ Mod △) は○の値を△で割った余りを求める処理です。
今回の場合は奇数のみを加算するという事で、2で割って余りが1の場合のみ処理をするようにしています。
No5
値の加算
No6
次の行へ移る
No7
計算結果をB2にセットする
A列に入っている値が空欄になった時点で処理が終了されるので、
A列が虫食い状態で値が入っている場合は別の手を考える必要があります。
ではでは、今日はこんくらいで。
See You...

