思考酒後

自分に入ってきた情報を定着、深化するために文章化

MENU

【Excelマクロ】自分用の整理メモ【IF・for~next】


マクロの関数、「if」と「for~next」とその組み合わせについて理解したので

使用法を備忘録として下記に記録しておきます。

①if

もし○○ならば、△△する。という関数。Excelのifとほぼ同じ。違うのがElseifで条件を増やせるところ。ifの中にifを入れまくる(ネスト)必要がないから楽。また、ネストはIFの間を&でつなぐと回避できるみたい。

 

▼ネスト(入れ子)の回避方法

masa-mn.hatenablog.com

Sub usage_if()

'ifの使用法

'条件1:もしC3が1なら、D3は"C3は1です"と入力される
If Range("C3") = 1 Then
Range("D3") = "C3は1です"

'条件2:もしC3が空白なら、D3は"C3は空白です"と入力される
ElseIf Range("C3") = "" Then
Range("D3") = "C3は空白です"

'条件3:条件1と条件2に該当しないなら、D3は"C3の入力値は不明です"と入力される
Else:
Range("D3") = "C3の入力値は不明です"

'ifを終了するときはEnd Ifとする。これがないとエラーが表示される。
End If

End Sub

 

②for~next

変数を使用したい時に用いる関数。これがあると処理が格段に楽になる場合があります。

Sub usage_fornext()

'for~nextの使用法
'変数を用いたい場合にfor~nextを用いる。

'変数の宣言
'iは変数です
Dim i As Variant

'iは1~7まで変化します。
For i = 1 To 7
'Cells(縦,横)【縦変化、横固定】で参照されるセルは、(iの参照値)*2
Cells(i + 10, 4) = Cells(i + 10, 3) * 2
Next i

End Sub

 

③ifとfor~nextの組み合わせ

宣言と終了の順番を守らないと作動しないので注意が必要か。End if、Next iの挿入位置がイマイチ分からなかったので記載しています。

 

Sub usage_if_fornext()

'ifとfor~nextの組み合わせの使用法
Dim j As Variant

'宣言の順番:for~next→if
For i = 1 To 7
If Cells(23 + i, 3) < 0 Then
Cells(23 + i, 4) = -1 * Cells(23 + i, 3)
ElseIf Cells(23 + i, 3) > 0 Then
Cells(23 + i, 4) = 1 * Cells(23 + i, 3)
Else
Cells(23 + i, 4) = 0

'終了の順番:if→for~next

End If
Next i

End Sub

以下、それぞれのマクロを起動させたときの結果。

※マクロは右クリックから図形に登録することができる。登録後、図形を押すとマクロを起動させることができます。

f:id:masa_mn:20161115170811j:plain