制御構造を追加してみましょう

やっとプログラムらしい項目がやってきました。入力した値によって以降の処理をかえると言うのが、制御構造の基本です。あるいは繰り返しとなりますが、構文は過去トピックの覚える言語はたったの5つ参照して見てください。

今回は、まずマクロレコーダーを使って適当なエクセルオペレーションを行い動作をVBAに書いてもらい
ます。(この方がきっと楽ですから・・・とにかく動いて、処理ができるをモットーにしていますので・・・)


マクロレコーダーでの記録

クリックで拡大

【メニュー】ツール→マクロ→新しいマクロの記録を選択します。


マクロの記録ダイヤログでOKボタンを押します。
(以降の作業が記録されます。)

クリックで拡大

左の例のように書いてみます。
作業が済んだら、必ず記録終了のボタンを押してください。

押し忘れると作業をずっと記録しつづけますので、要注意です。

クリックで拡大

Visual Basic Editorを開くと作業が記録されています。
A1のセルを選んで、
"1"を記入して、
B3のセルを選んで、
"5より小さい"を記入して、
B4のセルを選んで、
"5より大きい"を記入して、
B5のセルに移動。

と記録されています。
漢字にふりがなを打つ作業も勝手にしていますが、今回は無視してしまいます。


制御構造の作成

クリックで拡大

先ほどのマクロに制御構造を追加します。

まづ、ataiという変数を用意してセルA1の値を取得します。
次にIF文で5を基準に切り分けします。
結果をセルB3に書き込みます。

という感じで左のようプログラムになりました。

 

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 :
'

'
atai = Range("A1")

If (atai < 5) Then
Range("B3").Select
ActiveCell.FormulaR1C1 = "5より小さい"
Else
Range("B3").Select
ActiveCell.FormulaR1C1 = "5より大きい"
End If

End Sub

動かしてみましょう!

クリックで拡大

セルA1に値をいれて・・・
【メニュー】ツール→マクロ→マクロを選択します。


【マクロ】ダイヤログボックスが表示されます。
他に開いているマクロプログラムがあれば、ここに一覧として表示されます。
目的のプログラムを選択して実行します。

クリックで拡大

プログラムどおりに実行されたのが確認できるかと思います。


クリックで拡大

違う値をいれて何度か実行してみるときちんと処理が分かれています。



制御構造の追加

クリックで拡大

既にお気づきの方もおられるかと思いますが、5を入力した場合には今の処理では正しい形になっていません。
と、いうか"5"用の答えが用意されていません。


クリックで拡大

早速、Visual Basic Editorへ戻ってA1の入力が"5"だったときの処理を追加します。



 

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 :
'

'
atai = Range("A1")

If (atai < 5) Then
Range("B3").Select
ActiveCell.FormulaR1C1 = "5より小さい"
ElseIf (atai = 5) Then
Range("B3").Select
ActiveCell.FormulaR1C1 = "5です"
Else
Range("B3").Select
ActiveCell.FormulaR1C1 = "5より大きい"
End If

End Sub

 

 

クリックで拡大

期待通り(答え通り)の処理がなったと思います。
以上のように、追記で書き込むことももちろん可能です。

 

エクセルファイルのダウンロードはこちら
*お勧め
マクロウィルス等の不安のある方は一つ前のデータを VBエディターへコピーペーストしてください。

簡単な制御構造としてIF文を使った分岐処理を行ってみました。

ページトップへ