Excelマクロにおける基本文法(繰り返しと分岐)

マクロにおける基本文法(for文とif文)

プログラミング言語でよく使われるのが繰り返し文と分岐文です。もちろんVBAでも、繰り返しや分岐の操作をすることができます。

※マクロを全く使用したことのない方はこちら。VBAの始め方や値の代入について説明しています。

繰り返し(for文)

ストーク

C言語は繰り返しと分岐を上手く使ってプログラムを書くけん、VBAでも繰り返しや分岐の操作ってできるんか?

シママ

うん!もちろんできるよ!これをエクセルと組み合わせてグラフィカルに計算を進めるのがVBAの醍醐味なのよ!
今回はその方法を教えるね!まずはサンプルコードから!

※プログラムここから※

Sub roop()

Dim i As Integer
Dim num As Double

With Worksheets(“Sheet1”)
.Cells(2, 3) = 1
num = .Cells(2, 3)

For i = 1 To 10
.Cells(i, 4) = num * i
Next i

For i = 1 To 10 Step 2
.Cells(i, 5) = num * i
Next i
End With
End Sub

※プログラムここまで※

シママ

実行するとこんな感じの画面になるよ!

ストーク

VBAもfor文使って繰り返しを表現するたいね~。For~Nextの間に繰り返したい操作を書くんやな。

シママ

うん!For文の中にCells(i,4)ってあるでしょ?つまり、セルを繰り返し変数iと連動させることができるのよ。
For文の上の2行「.Cells(2, 3) = 1
num = .Cells(2, 3)」でnumに1が代入されているでしょ?この状態で
1ループ目はCells(1,4)=num*1だから、D1セルに1が入る。
2ループ目はCells(2,4)=num*2だから、D2セルに2が入る。
3ループ目はCells(3,4)=num*3だから、D3セルに3が入る。
・・・といった具合に10まで繰り返すのよ。

ストーク

なるほど・・・。これで俺が今までやっていた科学技術計算をマクロ化できそうやなぁ~。

シママ

あとね、セル位置って別にA1とかA3とかで指定しても値を代入することはできるのよ。

ストーク

あ、ホンマや。

シママ

でも、わざわざ、Cells(1,4)みたいなセルの指定の仕方をするのは、
今みたいにFor文と組ませるためなの。

ストーク

そっか。A1,A2のような書き方やとiに置き換えられへんもんな~。

条件分岐文(if文)

ストーク

if文も書けるんよな?

シママ

もちろん!こんな感じにね!

サンプルプログラムを示します。

※プログラムここから※
Sub even_odd()

Dim i As Integer
Dim num As Double

With Worksheets(“Sheet1”)
.Cells(1, 1) = 1
num = .Cells(1, 1)

For i = 1 To 10 Step 1

If i Mod 2 = 0 Then
.Cells(i, 2) = num * i
Else
.Cells(i, 3) = num * i
End If
Next i

End With
End Sub

※プログラムここまで※

ストーク

これは・・・。i Mod 2と言うのは、iを2で割った余りを求めるって意味やな?

シママ

そうそう!それが0なら偶数で、そうでなければ奇数でしょ?

ストーク

そっか。i = 2,4,6・・・なら、i Mod 2 = 0がTrueだから、2列目(B列)に出て、
それ以外の1,3,5・・・は3列目(C列)に出るのか・・。

シママ

そうその通り!実行すればこんな感じになるよ!

まとめ

VBAでの基本的なfor文やif文の使い方をまとめました。
上記サンプルプログラムは、そのままコピーアンドペーストすれば使えるようになっています。ぜひ、自分でコピーアンドペーストして遊んでみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です