この記事では、VBAマクロでもし空白なら何もしないで次へ・終了する方法【値が無ければ処理しない、条件分岐】 【If, For Next】、について解説していきます。
ポイントとしては`If`文と`For Next`ループを使用することです。
なお、マクロ初心者でもわかりやすいように変数名をaaaaa変数aaaaaといった名称にしています。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
VBAマクロでもし空白なら何もしないで次にいく方法【値が無ければ処理しない、条件分岐】
それではまず、値が空白の場合に処理をスキップして次に進む方法について解説していきます。
この処理は、例えばExcelシート上の特定の列(ここでは”ok列”)に値が入っているかどうかをチェックし、値があればその値に何らかの計算を行い、結果を隣の列に出力するというものです。
値が空白ならば、その行はスキップして次の行へ処理を移します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaaSkipBlankAndCalculateaaaaa()
Dim aaaaaLastRowaaaaa As Long
Dim aaaaaRowIndexaaaaa As Long
aaaaaLastRowaaaaa = Cells(Rows.Count, "ok").End(xlUp).Row
For aaaaaRowIndexaaaaa = 1 To aaaaaLastRowaaaaa
If Cells(aaaaaRowIndexaaaaa, "ok").Value <> "" Then
' 空白でない場合、計算を実行し、結果を隣の列に出力
Cells(aaaaaRowIndexaaaaa, "ok").Offset(0, 1).Value = Cells(aaaaaRowIndexaaaaa, "ok").Value * 2
End If
' 空白の場合、何もせずに次の行へ
Next aaaaaRowIndexaaaaa
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaaSkipBlankAndCalculateaaaaa関数を実行します。
このコードは、Excelシートの”ok”列を上から順にチェックし、空白でないセルに対してその値を2倍にして隣の列に出力します。
空白のセルがあれば、その行は無視して次の行へと処理を進めます。この方法により、効率的に条件に基づいた計算を行うことができます。
VBAマクロでもし空白なら何もしないで終了する方法【値が無ければ処理しない、条件分岐】
続いては、値が空白の場合に処理を終了する方法について解説していきます。
この処理は、”okok”列に着目し、上から最終行まで順番に割り算を実行し、結果を右の列に記載します。
もし途中で空白セルがあった場合、そこで処理を停止し、それ以上の行は無視します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub aaaaaStopIfBlankaaaaa()
Dim aaaaaLastRowaaaaa As Long
Dim aaaaaRowIndexaaaaa As Long
aaaaaLastRowaaaaa = Cells(Rows.Count, "okok").End(xlUp).Row
For aaaaaRowIndexaaaaa = 1 To aaaaaLastRowaaaaa
If Cells(aaaaaRowIndexaaaaa, "okok").Value = "" Then
' 空白ならば処理を終了
Exit Sub
Else
' 空白でない場合、割り算を実行し、結果を隣の列に出力
Cells(aaaaaRowIndexaaaaa, "okok").Offset(0, 1).Value = Cells(aaaaaRowIndexaaaaa, "okok").Value / 2
End If
Next aaaaaRowIndexaaaaa
End Sub
コードのAlt+F8を押し、マクロ選択画面でaaaaaStopIfBlankaaaaa関数を実行します。
このコードでは、”okok”列を上から順にチェックし、空白セルを見つけた時点で処理を終了します。
各コードでは、Excel VBAの基本的な構造を使用しています。
`If`文と`For Next`ループを駆使することで、特定の条件下での処理を柔軟に制御することが可能です。
これらの技術をマスターすることで、Excel VBAの活用範囲が大幅に広がります。
まとめ