前回の記事では長くなったプログラムを改行・複数の行に分ける方法について紹介しました。
前回の記事はこちらから☟
【マクロVBA知識 25】長くなったプログラムを改行・複数の行に分ける方法 ► 独学エクセル塾 (dokugakuexcel.com)
今回は前回の内容の対称となる複数行のプログラムを1行・小数行にまとめる方法について紹介します。
Select Caseなどを使用する中で条件が単純な場合は文字数が少ないのに対し
必要となる行は増えてしまいます。
そこで今回は複数に分かれたプログラムを1行・小数行にまとめて
コンパクトに管理しやすいプログラムを作成する方法について紹介したいと思います。
それでは見ていきましょう。
■見本のプログラムを紹介
まず、内容を紹介するにあたりイメージしやすいように
見本の作業とプログラムを用意しました。下図をご覧ください。
内容としてD3にグーチョキパーを入力すると勝敗がF3に出力されるようにしたいと思います。
ではプログラムを作成してみましょう。
結果は下記の通りです。
Sub じゃんけんの勝敗()
Dim A As String
A = Cells(3, 4) ‘自分の出した手Select Case A
Case Is = “グー”
Cells(3, 6) = “あいこ”
Case Is = “チョキ”
Cells(3, 6) = “負け”
Case Is = “パー”
Cells(3, 6) = “勝ち”
End SelectEnd Sub
上記プログラムではCaseが複数あり、行数が増えてしまっています。
ではこちらを小数行にまとめていきましょう。
■プログラムを1行・小数行にまとめる
では先ほどのプログラムを実際の図で確認してみましょう。
Caseが多く、行数が増えてしまいます。
ここで使用するのが「:(コロン)」です。
使用方法は簡単です。1行目と2行目を1つにまとめ、間に「:」を付けるだけです。
例えばA行とB行があったとすると「A行:B行」という配置で1行にすることができます。
では先ほどのプログラムを1つのまとめてみましょう。
結果はこのようになりました。
Sub コロンを使用したじゃんけんの勝敗()
Dim A As String
A = Cells(3, 4) ‘自分の出した手Select Case A: Case Is = “グー”: Cells(3, 6) = “あいこ”: Case Is = “チョキ”: Cells(3, 6) = “負け”: Case Is = “パー”: Cells(3, 6) = “勝ち”: End Select
End Sub
実際の図で見てみましょう。
いかがでしょうか。
複数行のプログラムを1行にまとめることができました。
マクロVBAの機能上、行を分けないといけないもので文字数が少ない場合は
「:」を使って1行・小数行にまとめてみてください。
■よくあるエラーと対処法について
ここからは本内容で発生しやすいエラーと対処法について紹介します。
・コンパイルエラー:End If に対応するIf ブロックがありません/行頭のみ許されるステートメントです
こちらを使用した方はIf Thenで「:(コロン)」を使用したのでないでしょうか。
再度見本を見てみましょう。
内容としてD3にグーチョキパーを入力すると勝敗がF3に出力されるようにしたいと思います。
今回はIf Thenで作成してみました。
Sub IFを使用したじゃんけんの勝敗()
Dim A As String
A = Cells(3, 4) ‘自分の出した手If A = “グー” Then
Cells(3, 6) = “あいこ”
ElseIf A = “チョキ” Then
Cells(3, 6) = “負け”
ElseIf A = “パー” Then
Cells(3, 6) = “勝ち”
End IfEnd Sub
このプログラムでは正常に機能します。
ここで「:(コロン)」を使用して行を短縮してみましょう。
結果はこのようになります。
文字が赤くなり、エラーが出てしまいました。
結果として「:(コロン)」はIf Thenで使用することはできなくなっています。
処理の方は使用できるのですがThenとそれ以降の処理は行を分ける必要があります。
Select Caseは見本の通り使用できるので
こちらを使用するのも手ですね。
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
Office VBA の基礎知識 | Microsoft Learn
■まとめ
いかがだったでしょうか。
プログラムが長くなってしまうと、どこからどこまでがどの処理かわからなくなってしまいます。
その際は「:(コロン)」を使用して行を短縮してみてください。
それでは次回の記事でお会いしましょう。
コメント