エクセルをデータベースとして使うために繰り返しと条件文を使います。
VBA実践塾はデータの活用と合理化が目的ですので、早く繰り返しと条件文
をマスターして自動車を運転するように使ってください。
そのためには訓練することが大事です。
(1)繰り返しの使い方
(2)列の繰り返しの使い方
(3)2重ループ繰り返しの使い方
(4)条件文の付いた繰り返しの使い方
セルを使う計算式では
合計の計算式は
Cells(5, 2) = Cells(2, 2) + Cells(3, 2) + Cells(4, 2)としました。
繰り返しの勉強のためにあえてCells(5, 2)を変数と考えて
合計は最初0とします。
大阪を合計に加算する・名古屋を合計に加算する・東京を合計に加算する
と6000になります。
Cells(5, 2) = Cells(5, 2) + Cells(2, 2)
Cells(5, 2) = Cells(5, 2) + Cells(3, 2)
Cells(5, 2) = Cells(5, 2) + Cells(4, 2)
このようにして合計を計算していることがわかればよく出てくる
i=i+1も理解できたことになります。
代入という意味を理解してください。
Sub keisan1()
Cells(5, 2) = 0
Cells(5, 2) = Cells(5, 2) + Cells(2, 2)
Cells(5, 2) = Cells(5, 2) + Cells(3, 2)
Cells(5, 2) = Cells(5, 2) + Cells(4, 2)
End Sub
Cells(5, 2) = 0の意味わかりますかね。わからなければメールをしてください。
3行縦に並べば繰り返しがわかりやすくなってきます。
行の2,3,4が変化することに注目してください。
Cells(5, 2) = Cells(5, 2) + Cells(i, 2)
この式のiを2から加算していけばOKですね。
Sub keisan1_1()
Cells(5, 2) = 0
Dim i As Long
For i = 0 To 2
Cells(5, 2) = Cells(5, 2) + Cells(2 + i, 2)
Next
End Sub
プログラムを見やすくするためにkeisanという変数をつかってみましょう。
Sub keisan1_2()
Dim keisan As Long
keisan = Cells(2, 2) + Cells(3, 2) + Cells(4, 2)
Cells(5, 2) = keisan
End Sub
変数の定義と変数keisanの値をCells(5, 2)に代入している所を理解してください。
変数を定義した時点では0になっていますので
あえてkeisan=0をつけていません。
あった方がわかりやすいかもしれません。
次は縦に並べてみましょう。
Sub keisan1_3()
Dim keisan As Long
keisan = keisan + Cells(2, 2)
keisan = keisan + Cells(3, 2)
keisan = keisan + Cells(4, 2)
Cells(5, 2) = keisan
End Sub
Cells(5, 2)を変数にしていたよりプログラムがわかりやすくなってきましたね。
変数が意味を持っているからです。
できるだけ意味をもった変数を使いましょう。
Sub keisan1_4()
Dim i As Long
Dim keisan As Long
For i = 0 To 2
keisan = keisan + Cells(2 + i, 2)
Next
Cells(5, 2) = keisan
End Sub
やっと完成しました。
合計計算(6行目)・消費税計算(7行目)・税込計算(8行目)を1月から3月までiを使って繰り返す。
繰り返し前
'1月の計算
Cells(6, 2) = Cells(3, 2) + Cells(4, 2) + Cells(5, 2)
Cells(7, 2) = Cells(6, 2) * 消費税
Cells(8, 2) = Cells(6, 2) + Cells(7, 2)
i = 1
'2月の計算
Cells(6, 2 + i) = Cells(3, 2 + i) + Cells(4, 2 + i) + Cells(5, 2 + i)
Cells(7, 2 + i) = Cells(6, 2 + i) * 消費税
Cells(8, 2 + i) = Cells(6, 2 + i) + Cells(7, 2 + i)
i = i + 1
'3月の計算
Cells(6, 2 + i) = Cells(3, 2 + i) + Cells(4, 2 + i) + Cells(5, 2 + i)
Cells(7, 2 + i) = Cells(6, 2 + i) * 消費税
Cells(8, 2 + i) = Cells(6, 2 + i) + Cells(7, 2 + i)
i = i + 1
繰り返し後
'各月の計算
For i = 0 To 2
Cells(6, 2 + i) = Cells(3, 2 + i) + Cells(4, 2 + i) + Cells(5, 2 + i)
Cells(7, 2 + i) = Cells(6, 2 + i) * 消費税
Cells(8, 2 + i) = Cells(6, 2 + i) + Cells(7, 2 + i)
Next
合計計算(5列目)・消費税計算(6列目)・税込計算(7列目)を大阪・名古屋・東京までiを使って繰り返す。
繰り返し前
'合計の計算(i=3)
Cells(3, 2 + i) = Cells(3, 2 + i - 3) + Cells(3, 2 + i - 2) + Cells(3, 2 + i - 1)
Cells(4, 2 + i) = Cells(4, 2 + i - 3) + Cells(4, 2 + i - 2) + Cells(4, 2 + i - 1)
Cells(5, 2 + i) = Cells(5, 2 + i - 3) + Cells(5, 2 + i - 2) + Cells(5, 2 + i - 1)
Cells(6, 2 + i) = Cells(6, 2 + i - 3) + Cells(6, 2 + i - 2) + Cells(6, 2 + i - 1)
Cells(7, 2 + i) = Cells(7, 2 + i - 3) + Cells(7, 2 + i - 2) + Cells(7, 2 + i - 1)
Cells(8, 2 + i) = Cells(8, 2 + i - 3) + Cells(8, 2 + i - 2) + Cells(8, 2 + i - 1)
繰り返し後
For i = 3 To 8
Cells(i, 5) = Cells(i, 2) + Cells(i, 3) + Cells(i, 4)
Next
繰り返し前
'消費税の計算
Cells(3, 2 + i) = Cells(3, 2 + i - 1) * 消費税
Cells(4, 2 + i) = Cells(4, 2 + i - 1) * 消費税
Cells(5, 2 + i) = Cells(5, 2 + i - 1) * 消費税
Cells(6, 2 + i) = Cells(6, 2 + i - 1) * 消費税
i = i + 1
'総合計の計算
Cells(3, 2 + i) = Cells(3, 2 + i - 2) + Cells(3, 2 + i - 1)
Cells(4, 2 + i) = Cells(4, 2 + i - 2) + Cells(4, 2 + i - 1)
Cells(5, 2 + i) = Cells(5, 2 + i - 2) + Cells(5, 2 + i - 1)
Cells(6, 2 + i) = Cells(6, 2 + i - 2) + Cells(6, 2 + i - 1)
繰り返し後
For i = 3 To 6
Cells(i, 6) = Cells(i, 5) * 消費税
Cells(i, 7) = Cells(i, 5) + Cells(i, 6)
Next
列の合計
各行を計算する
keisan=keisan+各行のセル1月から4月
各行のセル1月から4月を繰り返しその外側に大阪から神戸までを繰り返す。
行と列を分けて計算しています。
Sub keisan3()
Dim i As Long
Dim j As Long
Dim keisan As Long
For i = 2 To 15 '行
For j = 2 To 5 '列
keisan = keisan + Cells(i, j)
Next
Cells(i, j) = keisan
keisan = 0
Next
For i = 2 To 6 '列
For j = 2 To 15 '行
keisan = keisan + Cells(j, i)
Next
Cells(j, i) = keisan
keisan = 0
Next
End Sub
InputBoxで入力した地区を条件にして繰り返しの中で使う。
Sub keisan4()
Dim i As Long
Dim tiku As String
tiku = InputBox("地区名")
For i = 2 To 15
If Cells(i, 1) = tiku Then
MsgBox tiku & "売上金額" & Cells(i, 2)
Exit Sub
End If
Next
End Sub
プログラムの動きがおかしいときプログラムを1step(1行)づつ動かしていき変数の値を
見ながらおかしい個所を見つけていきます。
イミディエイトウインドウとかウオッチウインドウを使う方法がありますがVBA実践塾は
ブレイクポイントを使って画面の中でマウスを変数の上に移動して変数の内容を確かめながら
エラーを見つけていく方法をとっています。
ブレイクポイントの付け方はプログラムソースの左の欄をクリックするとその欄が茶色になり
茶色の丸い印が出てきます。
実行は三角ボタンを押すか実行プルダウンのSubユーザーフォームの実行をクリックします。
一度実行すれば次は継続に変わりますので注意してください。
その時ブレイクポイントの欄で止まりますので変数の場所にマウスを置くと変数の内容が表示されます。
ここから1stepづつ実行していきます。
F7で1stepづつ実行していきますその時の変数の値を見ながらエラーを見つけていきます。